Exemplo n.º 1
0
    def __init__(self,
                 entity_design_base_path: str,
                 entity_design_key_name: str,
                 entity_design_description_property_name: str,
                 cache_name: str = None,
                 sorted_key_function: Callable[[dict, dict], str] = None,
                 fix_data_delegate: Callable[[str], str] = None):
        self.__cache_name: str = cache_name or ''
        self.__base_path: str = entity_design_base_path
        self.__key_name: str = entity_design_key_name or None
        self.__description_property_name: str = entity_design_description_property_name
        self.__sorted_key_function: Callable[[dict, dict],
                                             str] = sorted_key_function
        self.__fix_data_delegate: Callable[[str], str] = fix_data_delegate

        self.__cache = PssCache(self.__base_path,
                                self.__cache_name,
                                key_name=self.__key_name)
Exemplo n.º 2
0
    return lines


def _get_key_for_room_sort(room_info: dict, room_designs_data: dict) -> str:
    result = ''
    parent_infos = _get_parents(room_info, room_designs_data)
    if parent_infos:
        for parent_info in parent_infos:
            result += parent_info[ROOM_DESIGN_KEY_NAME].zfill(4)
    result += room_info[ROOM_DESIGN_KEY_NAME].zfill(4)
    return result


# ---------- Initilization ----------

__room_designs_cache = PssCache(ROOM_DESIGN_BASE_PATH, 'RoomDesigns',
                                ROOM_DESIGN_KEY_NAME)

__room_design_purchases_cache = PssCache(ROOM_DESIGN_BASE_PATH,
                                         'RoomDesignPurchases',
                                         ROOM_DESIGN_KEY_NAME,
                                         update_interval=60)


def __get_allowed_room_short_names():
    result = []
    room_designs_data = __room_designs_cache.get_data_dict3()
    for room_design_data in room_designs_data.values():
        if room_design_data[ROOM_DESIGN_DESCRIPTION_PROPERTY_NAME_2]:
            room_short_name = room_design_data[
                ROOM_DESIGN_DESCRIPTION_PROPERTY_NAME_2].split(':')[0]
            if room_short_name not in result:
Exemplo n.º 3
0
# ---------- Constants ----------

SHIP_DESIGN_BASE_PATH = 'ShipService/ListAllShipDesigns2?languageKey=en'
SHIP_DESIGN_KEY_NAME = 'ShipDesignId'
SHIP_DESIGN_DESCRIPTION_PROPERTY_NAME = 'ShipDesignName'

# ---------- Initilization ----------

ships_designs_retriever = entity.EntityRetriever(
    SHIP_DESIGN_BASE_PATH,
    SHIP_DESIGN_KEY_NAME,
    SHIP_DESIGN_DESCRIPTION_PROPERTY_NAME,
    cache_name='ShipDesigns')

__ship_designs_cache = PssCache(SHIP_DESIGN_BASE_PATH,
                                'ShipDesigns',
                                SHIP_DESIGN_KEY_NAME,
                                update_interval=60)


# ---------- Helper functions ----------
async def get_inspect_ship_for_user(user_id: str) -> (dict, dict):
    inspect_ship_path = await _get_inspect_ship_base_path(user_id)
    inspect_ship_data = await core.get_data_from_path(inspect_ship_path)
    result = core.xmltree_to_dict2(inspect_ship_data)
    return result.get('User', None), result.get('Ship', None)


async def get_ship_level(ship_info: dict,
                         ship_design_data: dict = None) -> str:
    if not ship_info:
        return None
Exemplo n.º 4
0
def __create_prestige_to_cache(char_design_id: str) -> PssCache:
    url = f'{__PRESTIGE_TO_BASE_PATH}{char_design_id}'
    name = f'PrestigeTo{char_design_id}'
    result = PssCache(url, name, None)
    return result
Exemplo n.º 5
0
import pss_lookups as lookups
import utility as util

# TODO: Create allowed values dictionary upon start.
# Get all item designs, split each ones name on ' ' and add each combination of 2 characters found to ALLOWED_ITEM_NAMES

# ---------- Constants ----------

ITEM_DESIGN_BASE_PATH = 'ItemService/ListItemDesigns2?languageKey=en'
ITEM_DESIGN_KEY_NAME = 'ItemDesignId'
ITEM_DESIGN_DESCRIPTION_PROPERTY_NAME = 'ItemDesignName'
ALLOWED_ITEM_NAMES = ['U']

# ---------- Initilization ----------

__item_designs_cache = PssCache(ITEM_DESIGN_BASE_PATH, 'ItemDesigns',
                                ITEM_DESIGN_KEY_NAME)

# ---------- Helper functions ----------


def get_item_details_from_id_as_text(item_id: str,
                                     item_designs_data: dict = None) -> list:
    if not item_designs_data:
        item_designs_data = __item_designs_cache.get_data_dict3()

    item_info = item_designs_data[item_id]
    return get_item_details_from_data_as_text(item_info)


def get_item_details_from_data_as_text(item_info: dict) -> list:
    bonus_type = item_info[
Exemplo n.º 6
0
def _create_prestige_from_cache(char_design_id) -> PssCache:
    url = f'{__PRESTIGE_FROM_BASE_PATH}{char_design_id}'
    name = f'PrestigeFrom{char_design_id}'
    result = PssCache(url, name, None)
    return result
Exemplo n.º 7
0
CHARACTER_DESIGN_BASE_PATH = 'CharacterService/ListAllCharacterDesigns2?languageKey=en'
CHARACTER_DESIGN_KEY_NAME = 'CharacterDesignId'
CHARACTER_DESIGN_DESCRIPTION_PROPERTY_NAME = 'CharacterDesignName'

COLLECTION_DESIGN_BASE_PATH = 'CollectionService/ListAllCollectionDesigns?languageKey=en'
COLLECTION_DESIGN_KEY_NAME = 'CollectionDesignId'
COLLECTION_DESIGN_DESCRIPTION_PROPERTY_NAME = 'CollectionName'

__PRESTIGE_FROM_BASE_PATH = f'CharacterService/PrestigeCharacterFrom?languagekey=en&characterDesignId='
__PRESTIGE_TO_BASE_PATH = f'CharacterService/PrestigeCharacterTo?languagekey=en&characterDesignId='

# ---------- Initilization ----------

__character_designs_cache = PssCache(CHARACTER_DESIGN_BASE_PATH,
                                     'CharacterDesigns',
                                     CHARACTER_DESIGN_KEY_NAME)

__collection_designs_cache = PssCache(COLLECTION_DESIGN_BASE_PATH,
                                      'CollectionDesigns',
                                      COLLECTION_DESIGN_KEY_NAME)

__prestige_from_cache_dict = {}
__prestige_to_cache_dict = {}

# ---------- Helper functions ----------


def get_ability_name(char_id: str, char_designs_data: dict = None) -> str:
    if char_id:
        if not char_designs_data:
Exemplo n.º 8
0

# ---------- Constants ----------

RESEARCH_DESIGN_BASE_PATH = 'ResearchService/ListAllResearchDesigns2?languageKey=en'
RESEARCH_DESIGN_KEY_NAME = 'ResearchDesignId'
RESEARCH_DESIGN_DESCRIPTION_PROPERTY_NAME = 'ResearchName'





# ---------- Initilization ----------

__research_designs_cache = PssCache(
    RESEARCH_DESIGN_BASE_PATH,
    'ResearchDesigns',
    RESEARCH_DESIGN_KEY_NAME)





# ---------- Helper functions ----------

def get_research_details_from_id_as_text(research_id: str, research_designs_data: dict = None) -> list:
    if not research_designs_data:
        research_designs_data = __research_designs_cache.get_data_dict3()

    research_info = research_designs_data[research_id]
    return get_research_details_from_data_as_text(research_info, research_designs_data)
Exemplo n.º 9
0
class EntityDesignsRetriever:
    def __init__(self,
                 entity_design_base_path: str,
                 entity_design_key_name: str,
                 entity_design_description_property_name: str,
                 cache_name: str = None,
                 sorted_key_function: Callable[[dict, dict], str] = None,
                 fix_data_delegate: Callable[[str], str] = None):
        self.__cache_name: str = cache_name or ''
        self.__base_path: str = entity_design_base_path
        self.__key_name: str = entity_design_key_name or None
        self.__description_property_name: str = entity_design_description_property_name
        self.__sorted_key_function: Callable[[dict, dict],
                                             str] = sorted_key_function
        self.__fix_data_delegate: Callable[[str], str] = fix_data_delegate

        self.__cache = PssCache(self.__base_path,
                                self.__cache_name,
                                key_name=self.__key_name)

    def get_data_dict3(self) -> Dict[str, Dict[str, object]]:
        return self.__cache.get_data_dict3()

    def get_entity_design_info_by_id(
        self,
        entity_design_id: str,
        entity_designs_data: Dict[str, Dict[str, object]] = None
    ) -> Dict[str, object]:
        entity_designs_data = entity_designs_data or self.get_data_dict3()
        if entity_design_id in entity_designs_data.keys():
            return entity_designs_data[entity_design_id]
        else:
            return None

    def get_entity_design_info_by_name(
        self,
        entity_name: str,
        entity_designs_data: Dict[str, Dict[str, object]] = None
    ) -> Dict[str, object]:
        entity_designs_data = entity_designs_data or self.get_data_dict3()
        entity_design_id = self.get_entity_design_id_by_name(
            entity_name, entity_designs_data=entity_designs_data)

        if entity_design_id and entity_design_id in entity_designs_data.keys():
            return entity_designs_data[entity_design_id]
        else:
            return None

    def get_entity_design_infos_by_name(
        self,
        entity_name: str,
        entity_designs_data: Dict[str, Dict[str, object]] = None,
        sorted_key_function: Callable[[dict, dict], str] = None
    ) -> List[Dict[str, object]]:
        entity_designs_data = entity_designs_data or self.get_data_dict3()
        sorted_key_function = sorted_key_function or self.__sorted_key_function

        entity_design_ids = self.get_entity_design_ids_by_name(
            entity_name, entity_designs_data=entity_designs_data)
        entity_designs_data_keys = entity_designs_data.keys()
        result = [
            entity_designs_data[entity_design_id]
            for entity_design_id in entity_design_ids
            if entity_design_id in entity_designs_data_keys
        ]
        if sorted_key_function is not None:
            result = sorted(
                result,
                key=lambda entity_info:
                (sorted_key_function(entity_info, entity_designs_data)))

        return result

    def get_entity_design_id_by_name(
            self,
            entity_name: str,
            entity_designs_data: Dict[str, Dict[str, object]] = None) -> str:
        results = self.get_entity_design_ids_by_name(entity_name,
                                                     entity_designs_data)
        if len(results) > 0:
            return results[0]
        else:
            return None

    def get_entity_design_ids_by_name(
            self,
            entity_name: str,
            entity_designs_data: Dict[str, Dict[str,
                                                object]] = None) -> List[str]:
        entity_designs_data = entity_designs_data or self.get_data_dict3()
        results = core.get_ids_from_property_value(
            entity_designs_data,
            self.__description_property_name,
            entity_name,
            fix_data_delegate=self.__fix_data_delegate)
        return results

    def update_cache(self) -> None:
        self.__cache.update_data()