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

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 ]