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')