event_matcher_messenger.py (2544B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\campaigns\client\v2\messengers\event_matcher_messenger.py 2 from __future__ import absolute_import, division, print_function 3 import logging 4 from campaigns.client.errors import EventMatcherRequestError, EventMatcherNotFoundError, EventMatcherBadRequestError 5 from campaigns.client.v2.data_model.event_matcher_definition import EventMatcherDefinition 6 from eveProto.generated.eve_public.campaign.trigger.eventmatch.definition.api.requests_pb2 import GetAllRequest, GetAllResponse 7 from six.moves.http_client import NOT_FOUND, BAD_REQUEST, OK 8 from semantic_version import SemanticVersion 9 from stackless_response_router.exceptions import TimeoutException, UnpackException 10 logger = logging.getLogger('campaigns_v2') 11 12 class CampaignEventMatcherMessenger(object): 13 14 def __init__(self, public_gateway): 15 self.public_gateway = public_gateway 16 17 def override_gateway(self, public_gateway): 18 self.public_gateway = public_gateway 19 20 def get_all_request(self, semantic_version): 21 request = GetAllRequest(version=semantic_version.to_eve_public_proto()) 22 info_log = 'Request: CampaignEventMatcherMessenger: GetAllRequest: {request}\n'.format(request=request) 23 try: 24 response_primitive, response = self.public_gateway.send_blocking_character_request_and_receive_response(request_payload=request, expected_response_class=GetAllResponse, timeout_seconds=4, max_attempts=2, retry_delay_in_seconds=1) 25 except (TimeoutException, UnpackException) as exc: 26 info_log += 'ERROR: %s' % exc.__class__.__name__ 27 logger.info(info_log) 28 raise EventMatcherRequestError('Failed to receive response from GetAllRequest: %s' % exc) 29 30 status_code = response_primitive.status_code 31 if status_code == NOT_FOUND: 32 raise EventMatcherNotFoundError('Could not find requested version in GetAllRequest: %s' % semantic_version) 33 if status_code == BAD_REQUEST: 34 raise EventMatcherBadRequestError('Bad request in GetAllRequest: %s' % semantic_version) 35 if status_code != OK: 36 raise EventMatcherRequestError('Received error status code for GetAllResponse: %s' % status_code) 37 info_log += 'Response: CampaignContributionMethodsMessenger: GetAllResponse: {response}'.format(response=response) 38 logger.info(info_log) 39 results = [ EventMatcherDefinition.from_proto(definition) for definition in response.definitions ] 40 return results