NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

repository.py (3252B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\cosmetics\client\character\title\repository\flatbuffer\repository.py
      2 import logging
      3 from cosmetics.client.character.title.const import LOGGER_NAME
      4 from cosmetics.client.character.title.model.flatbuffer.generated import TitleData as fb_model_root
      5 from cosmetics.client.character.title.api.error import DefinitionNotFoundError
      6 from cosmetics.client.character.title.model.definition.attributes import TitleAttributes
      7 from cosmetics.client.character.title.model.definition.identifier import TitleIdentifier
      8 from cosmetics.client.character.title.repository.flatbuffer.content_provider import TitleLocalizedDefinitionsProvider
      9 from cosmetics.client.character.title.repository.flatbuffer.in_memory_cache import TitleDefinitionsInMemoryCache
     10 from publicGateway.gateway import PublicGateway
     11 from caching.client.storage.version_disk_storage import VersionedBinaryDiskStorage
     12 from content.client.flatbuffer.repository import VersionCachedFlatbufferRepository
     13 from semantic_version import SemanticVersion
     14 from collections import OrderedDict
     15 logger = logging.getLogger(LOGGER_NAME)
     16 
     17 class TitleLocalizedDefinitionsRepository(VersionCachedFlatbufferRepository):
     18     content_id = 'character_titles'
     19     provider_type = TitleLocalizedDefinitionsProvider
     20     disk_storage_type = VersionedBinaryDiskStorage
     21     in_memory_storage_type = TitleDefinitionsInMemoryCache
     22     in_memory_ttl = 86400
     23 
     24     def __init__(self, public_gateway, language_code):
     25         self._language_code = language_code
     26         super(TitleLocalizedDefinitionsRepository, self).__init__(public_gateway=public_gateway, language_code=language_code)
     27 
     28     @property
     29     def content_name(self):
     30         return '{id}_{language}'.format(id=self.content_id, language=self._language_code)
     31 
     32     def get_all_titles(self):
     33         return self._in_memory_cache.titles_by_id
     34 
     35     def get_title(self, identifier):
     36         if identifier not in self._in_memory_cache.titles_by_id:
     37             raise DefinitionNotFoundError
     38         return self._in_memory_cache.titles_by_id[identifier]
     39 
     40     def get_current_version_in_memory(self):
     41         return self._in_memory_cache.get_version()
     42 
     43     def get_current_version_on_disk(self):
     44         return self._disk_storage.get_version()
     45 
     46     def check_version_and_prime(self, latest_version):
     47         self._start_request_update_task(self._disk_storage.get_version(), latest_version)
     48 
     49     def admin_clear_disk_cache(self):
     50         self._disk_storage.clear()
     51 
     52     def _construct_data_from_binary(self, binary_data):
     53         root = fb_model_root.GetRootAs(binary_data)
     54         titles = OrderedDict()
     55         self._load_titles([ root.Titles(i) for i in range(root.TitlesLength()) ], titles)
     56         return titles
     57 
     58     def _get_default_data(self):
     59         return {}
     60 
     61     @staticmethod
     62     def _load_titles(fb_titles, titles):
     63         for fb_title in fb_titles:
     64             title_identifier = TitleIdentifier.from_flatbuffer(fb_title.Id())
     65             titles[title_identifier] = TitleAttributes.from_flatbuffer(fb_title)
     66 
     67     def print_definitions(self):
     68         self._in_memory_cache.print_definitions()
     69 
     70     def get(self, key, **kwargs):
     71         pass
     72 
     73     def get_all(self, **kwargs):
     74         pass