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

external_messenger.py (9082B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\sovereignty\upgrades\client\external_messenger.py
      2 from __future__ import print_function
      3 import gametime
      4 from six.moves import http_client as httplib
      5 import sovereignty.upgrades.client.errors as errors
      6 from eveProto import timestamp_to_blue
      7 from eveProto.generated.eve_public.inventory.generic_item_pb2 import Identifier as ItemID
      8 from eveProto.generated.eve_public.inventory.generic_item_type_pb2 import Identifier as TypeID
      9 from eveProto.generated.eve_public.sovereignty.hub.hub_pb2 import Identifier as HubID
     10 from eveProto.generated.eve_public.sovereignty.hub.upgrade.api import requests_pb2
     11 from eveProto.generated.eve_public.sovereignty.hub.upgrade.upgrade_pb2 import Identifier as UpgradeIdentifier
     12 from eveProto.generated.eve_public.sovereignty.hub.upgrade.upgrade_type_pb2 import Identifier as UpgradeTypeIdentifier
     13 from publicGateway.grpc.exceptions import GenericException
     14 from sovereignty.client.base_external_messenger import BaseClientExternalMessenger
     15 from sovereignty.upgrades.client.data_types import UpgradeStaticData, InstalledUpgradeData
     16 from sovereignty.upgrades.client.proto_parsers import parse_hub_upgrades
     17 from sovereignty.upgrades.const import UPGRADE_GROUP_IDS
     18 TIMEOUT_SECONDS = 10
     19 
     20 class SovUpgradesExternalMessenger(BaseClientExternalMessenger):
     21 
     22     def get_data_for_upgrades(self):
     23         try:
     24             request = requests_pb2.GetDefinitionsRequest()
     25             request_wrapper, response_wrapper, response_payload = self._send_request(request, requests_pb2.GetDefinitionsResponse)
     26         except GenericException as e:
     27             if e.response_primitive.status_code == httplib.NOT_FOUND:
     28                 raise errors.SovUpgradeNotFoundError(e)
     29             raise errors.SovUpgradeDataUnavailableError(e)
     30 
     31         upgrade_definitions = []
     32         for upgrade in response_payload.definitions:
     33             upgrade_definitions.append(UpgradeStaticData(upgrade.installation_type.sequential, upgrade.power_required, upgrade.workforce_required, upgrade.fuel_type.sequential, upgrade.fuel_consumption_per_hour, upgrade.fuel_startup_cost, upgrade.mutually_exclusive_group, upgrade.power_produced, upgrade.workforce_produced))
     34 
     35         return upgrade_definitions
     36 
     37     def get_installed_upgrades(self, hub_id):
     38         try:
     39             request = requests_pb2.GetHubUpgradesRequest(hub=HubID(sequential=hub_id))
     40             request_wrapper, response_wrapper, response_payload = self._send_request(request, requests_pb2.GetHubUpgradesResponse)
     41         except GenericException as e:
     42             if e.response_primitive.status_code == httplib.FORBIDDEN:
     43                 raise errors.SovUpgradeDataAccessRestrictedError(e)
     44             raise errors.SovUpgradeDataUnavailableError(e)
     45 
     46         installed_upgrade_data = parse_hub_upgrades(response_payload.hub_upgrades)
     47         last_updated = timestamp_to_blue(response_payload.hub_upgrades.last_updated)
     48         return (installed_upgrade_data, last_updated)
     49 
     50     def update_upgrade_configuration(self, hub_id, new_upgrades_item_ids, upgrades_states):
     51         configuration = [ requests_pb2.ProcessConfigurationRequest.UpgradeConfiguration(upgrade_type=TypeID(sequential=type_id), online=online) for type_id, online in upgrades_states ]
     52         try:
     53             request = requests_pb2.ProcessConfigurationRequest(new_upgrades=[ ItemID(sequential=x) for x in new_upgrades_item_ids ], configuration=configuration, hub=HubID(sequential=hub_id))
     54             request_wrapper, response_wrapper, response_payload = self._send_request(request, requests_pb2.ProcessConfigurationResponse)
     55         except GenericException as e:
     56             if e.response_primitive.status_code == httplib.BAD_REQUEST:
     57                 raise errors.SovUpgradeInstallBadRequestError(e)
     58             if e.response_primitive.status_code == httplib.FORBIDDEN:
     59                 raise errors.SovUpgradeInstallUnauthorizedError(e)
     60             if e.response_primitive.status_code == httplib.NOT_FOUND:
     61                 raise errors.SovUpgradeInstallNotFoundError(e)
     62             if e.response_primitive.status_code == httplib.CONFLICT:
     63                 raise errors.SovUpgradeInstallConflictError(e)
     64             if e.response_primitive.status_code == httplib.INTERNAL_SERVER_ERROR:
     65                 raise errors.SovUpgradeInstallInternalError(e)
     66             raise errors.SovUpgradeInstallError(e)
     67 
     68         installed_upgrade_data = parse_hub_upgrades(response_payload.hub_upgrades)
     69         last_updated = response_payload.hub_upgrades.last_updated
     70         return installed_upgrade_data
     71 
     72     def uninstall_upgrade(self, hub_id, upgrade_type_id):
     73         try:
     74             request = requests_pb2.UninstallRequest(upgrade=UpgradeIdentifier(hub=HubID(sequential=hub_id), upgrade_type=UpgradeTypeIdentifier(sequential=upgrade_type_id)))
     75             request_wrapper, response_wrapper, response_payload = self._send_request(request, requests_pb2.UninstallResponse)
     76         except GenericException as e:
     77             if e.response_primitive.status_code == httplib.FORBIDDEN:
     78                 raise errors.SovUpgradeUninstallForbiddenError(e)
     79             if e.response_primitive.status_code == httplib.NOT_FOUND:
     80                 raise errors.SovUpgradeUninstallNotFoundError(e)
     81             if e.response_primitive.status_code == httplib.INTERNAL_SERVER_ERROR:
     82                 raise errors.SovUpgradeUninstallInternalErrorError(e)
     83             raise errors.SovUpgradeUninstallError(e)
     84 
     85 
     86 class FakeSovUpgradesExternalMessenger(object):
     87     fakeDataByRemainder = {0: {'power': 100,
     88          'workforce': 200,
     89          'fuel_type_id': 81144,
     90          'consumption_per_hour': 5,
     91          'startup_cost': 1,
     92          'mutually_exclusive_group': 'mutually_exclusive_group_A',
     93          'power_produced': 0,
     94          'workforce_produced': 0},
     95      1: {'power': 10,
     96          'workforce': 20,
     97          'fuel_type_id': 81143,
     98          'consumption_per_hour': 3,
     99          'startup_cost': 2,
    100          'mutually_exclusive_group': 'mutually_exclusive_group_A',
    101          'power_produced': 0,
    102          'workforce_produced': 0},
    103      2: {'power': 30,
    104          'workforce': 15,
    105          'fuel_type_id': 1230,
    106          'consumption_per_hour': 1,
    107          'startup_cost': 1,
    108          'mutually_exclusive_group': 'mutually_exclusive_group_B',
    109          'power_produced': 0,
    110          'workforce_produced': 0},
    111      3: {'power': 400,
    112          'workforce': 300,
    113          'fuel_type_id': 81143,
    114          'consumption_per_hour': 50,
    115          'startup_cost': 30,
    116          'mutually_exclusive_group': 'mutually_exclusive_group_B',
    117          'power_produced': 0,
    118          'workforce_produced': 0}}
    119     PLACEHOLDER_KEY = (-1, -1)
    120     fakeInstalledByRemainder = {0: [InstalledUpgradeData(32422, True, PLACEHOLDER_KEY), InstalledUpgradeData(81619, False, PLACEHOLDER_KEY), InstalledUpgradeData(2001, True, PLACEHOLDER_KEY)],
    121      1: [InstalledUpgradeData(81623, False, PLACEHOLDER_KEY), InstalledUpgradeData(81619, False, PLACEHOLDER_KEY), InstalledUpgradeData(2009, True, PLACEHOLDER_KEY)],
    122      2: [InstalledUpgradeData(81615, True, PLACEHOLDER_KEY),
    123          InstalledUpgradeData(2008, True, PLACEHOLDER_KEY),
    124          InstalledUpgradeData(2009, True, PLACEHOLDER_KEY),
    125          InstalledUpgradeData(81621, True, PLACEHOLDER_KEY),
    126          InstalledUpgradeData(32422, True, PLACEHOLDER_KEY),
    127          InstalledUpgradeData(81619, True, PLACEHOLDER_KEY),
    128          InstalledUpgradeData(2001, True, PLACEHOLDER_KEY),
    129          InstalledUpgradeData(81623, False, PLACEHOLDER_KEY),
    130          InstalledUpgradeData(82496, False, PLACEHOLDER_KEY)],
    131      3: [InstalledUpgradeData(81615, False, PLACEHOLDER_KEY), InstalledUpgradeData(2008, False, PLACEHOLDER_KEY), InstalledUpgradeData(2009, False, PLACEHOLDER_KEY)]}
    132     byHubID = {1016094694774L: fakeInstalledByRemainder[2]}
    133 
    134     def get_data_for_upgrades(self):
    135         import evetypes
    136         return [ self._get_data_for_upgrade(x) for x in [32422,
    137          81619,
    138          2001,
    139          81623,
    140          2009,
    141          81615,
    142          2008,
    143          81621,
    144          32422,
    145          82496] + list(evetypes.GetTypeIDsByGroups(UPGRADE_GROUP_IDS)) ]
    146 
    147     def _get_data_for_upgrade(self, type_id):
    148         data = self.fakeDataByRemainder.get(type_id % 4, None)
    149         return UpgradeStaticData(type_id=type_id, **data)
    150 
    151     def get_installed_upgrades(self, hub_id):
    152         if hub_id in self.byHubID:
    153             return self.byHubID[hub_id]
    154         installedUpgrades = [ x.take_copy() for x in self.fakeInstalledByRemainder[hub_id % 3] ]
    155         for x in installedUpgrades:
    156             x._upgrade_id_key = (hub_id, x.upgrade_type_id)
    157 
    158         return (installedUpgrades, gametime.GetWallclockTime())
    159 
    160     def update_upgrade_configuration(self, new_upgrades_item_ids, upgrades_states):
    161         print('save configuration')
    162         installed_upgrade_data = [ InstalledUpgradeData(typeID, onlineState, (-1, typeID)) for typeID, onlineState in upgrades_states ]
    163         return installed_upgrade_data
    164 
    165     def uninstall_upgrade(self, hub_id, upgrade_type_id):
    166         print('uninstall_upgrade')