assetholdingMessenger.py (1356B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\assetholding\client\messengers\assetholdingMessenger.py 2 import uuid 3 import logging 4 import assetholding.client.messengers.assetholdingMessengerSignal as messenger_signals 5 from eveProto.generated.eve_public.assetholding.entitlement.api.notices_pb2 import RedeemedNotice 6 logger = logging.getLogger('asset_holding') 7 8 class AssetHoldingMessenger(object): 9 _instance = None 10 public_gateway = None 11 12 @classmethod 13 def get_instance(cls, public_gateway): 14 if not cls._instance: 15 cls._instance = AssetHoldingMessenger(public_gateway) 16 return cls._instance 17 18 def __init__(self, public_gateway): 19 self.public_gateway = public_gateway 20 self._subscribe_to_notices() 21 22 def _subscribe_to_notices(self): 23 self.public_gateway.subscribe_to_notice(RedeemedNotice, lambda payload, _: self._on_entitlement_redeemed(entitlement_id=payload.entitlement, change_quantity=payload.quantity)) 24 25 def _on_entitlement_redeemed(self, entitlement_id, change_quantity): 26 logger.info('Entitlement Redeemed Notice: {} with quantity {}'.format(entitlement_id, change_quantity)) 27 external_id = uuid.UUID(bytes=entitlement_id.group_by.uuid) 28 messenger_signals.on_entitlement_redeemed_internal(external_id, change_quantity)