track_messenger.py (4260B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\campaigns\client\v2\messengers\track_messenger.py 2 import logging 3 from campaigns.client.errors import CampaignRequestError, CampaignBadRequestError, CampaignNotFoundError, CampaignUnauthorizedError 4 from campaigns.client.v2.data_model.track_prediction import TickingContributionPrediction 5 from eveProto.generated.eve_public.campaign.track.api.requests_pb2 import RedeemParticipantRewardsRequest, RedeemParticipantRewardsResponse, GetTickingContributionsPredictionRequest, GetTickingContributionsPredictionResponse 6 from six.moves.http_client import OK, BAD_REQUEST, NOT_FOUND, UNAUTHORIZED 7 from stackless_response_router.exceptions import TimeoutException, UnpackException 8 logger = logging.getLogger('campaigns_v2') 9 10 class TrackMessenger(object): 11 12 def __init__(self, public_gateway): 13 self.public_gateway = public_gateway 14 15 def override_gateway(self, public_gateway): 16 self.public_gateway = public_gateway 17 18 def redeem_participant_rewards_request(self, track_id): 19 request = RedeemParticipantRewardsRequest(track=track_id.to_proto()) 20 info_log = 'Request: Tracks: RedeemParticipantRewardsRequest: {request}\n'.format(request=request) 21 try: 22 response_primitive, response = self.public_gateway.send_blocking_character_request_and_receive_response(request_payload=request, expected_response_class=RedeemParticipantRewardsResponse, timeout_seconds=4, max_attempts=2, retry_delay_in_seconds=1) 23 except (TimeoutException, UnpackException) as exc: 24 info_log += 'ERROR: %s' % exc.__class__.__name__ 25 logger.info(info_log) 26 raise CampaignRequestError('Failed to receive response from RedeemParticipantRewardsRequest: %s' % exc) 27 28 status_code = response_primitive.status_code 29 if status_code == NOT_FOUND: 30 raise CampaignNotFoundError('Could not find requested track in RedeemParticipantRewardsRequest: %s' % track_id) 31 if status_code == UNAUTHORIZED: 32 raise CampaignUnauthorizedError('Could not authorize request in RedeemParticipantRewardsRequest: %s' % track_id) 33 if status_code == BAD_REQUEST: 34 raise CampaignBadRequestError('Bad request in RedeemParticipantRewardsRequest: %s' % track_id) 35 if status_code != OK: 36 raise CampaignRequestError('Received error status code for RedeemParticipantRewardsRequest: %s' % status_code) 37 info_log += 'Response: Tracks: RedeemParticipantRewardsResponse: {response}'.format(response=response) 38 logger.info(info_log) 39 40 def get_ticking_contributions_prediction_request(self, track_id): 41 request = GetTickingContributionsPredictionRequest(track=track_id.to_proto()) 42 info_log = 'Request: Tracks: GetTickingContributionsPredictionRequest: {request}\n'.format(request=request) 43 try: 44 response_primitive, response = self.public_gateway.send_blocking_character_request_and_receive_response(request_payload=request, expected_response_class=GetTickingContributionsPredictionResponse, timeout_seconds=4, max_attempts=2, retry_delay_in_seconds=1) 45 except (TimeoutException, UnpackException) as exc: 46 info_log += 'ERROR: %s' % exc.__class__.__name__ 47 logger.info(info_log) 48 raise CampaignRequestError('Failed to receive response from GetTickingContributionsPredictionRequest: %s' % exc) 49 50 status_code = response_primitive.status_code 51 if status_code == NOT_FOUND: 52 raise CampaignNotFoundError('Could not find requested track in GetTickingContributionsPredictionRequest: %s' % track_id) 53 if status_code == BAD_REQUEST: 54 raise CampaignBadRequestError('Bad request in GetTickingContributionsPredictionRequest: %s' % track_id) 55 if status_code != OK: 56 raise CampaignRequestError('Received error status code for GetTickingContributionsPredictionResponse: %s' % status_code) 57 info_log += 'Response: Tracks: GetTickingContributionsPredictionResponse: {response}'.format(response=response) 58 logger.info(info_log) 59 return [ TickingContributionPrediction.from_proto(contribution) for contribution in response.contributions ]