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

objective_messenger.py (6242B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\campaigns\client\v2\messengers\objective_messenger.py
      2 from __future__ import absolute_import, division, print_function
      3 import logging
      4 from campaigns.client.errors import CampaignRequestError, CampaignBadRequestError, CampaignNotFoundError, CampaignUnauthorizedError
      5 from campaigns.client.v2.data_model.objective import ObjectiveDefinition, ObjectiveStatus, ObjectiveParticipantStats
      6 from campaigns.client.v2.data_model.track import TrackID, TrackStatus, TrackParticipantStats
      7 from eveProto.generated.eve_public.campaign.objective.api.requests_pb2 import GetRequest, GetResponse, GetStatusRequest, GetStatusResponse, GetParticipantStatusRequest, GetParticipantStatusResponse
      8 from six.moves.http_client import OK, BAD_REQUEST, NOT_FOUND, NOT_MODIFIED, UNAUTHORIZED
      9 from stackless_response_router.exceptions import TimeoutException, UnpackException
     10 logger = logging.getLogger('campaigns_v2')
     11 
     12 class ObjectiveMessenger(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_request(self, objective_id, current_version = None):
     21         request = GetRequest(objective=objective_id.to_proto())
     22         if current_version is None:
     23             request.no_version = True
     24         else:
     25             request.version.MergeFrom(current_version.to_proto())
     26         info_log = 'Request: Objectives: GetRequest: {request}\n'.format(request=request)
     27         try:
     28             response_primitive, response = self.public_gateway.send_blocking_character_request_and_receive_response(request_payload=request, expected_response_class=GetResponse, timeout_seconds=4, max_attempts=2, retry_delay_in_seconds=1)
     29         except (TimeoutException, UnpackException) as exc:
     30             info_log += 'ERROR: %s' % exc.__class__.__name__
     31             logger.info(info_log)
     32             raise CampaignRequestError('Failed to receive response from objective GetRequest: %s' % exc)
     33 
     34         status_code = response_primitive.status_code
     35         if status_code == NOT_MODIFIED:
     36             logger.info(info_log + 'Response: Objectives: GetResponse: NOT_MODIFIED')
     37             return NOT_MODIFIED
     38         if status_code == NOT_FOUND:
     39             raise CampaignNotFoundError('Could not find requested objective in GetRequest: %s' % objective_id)
     40         if status_code == BAD_REQUEST:
     41             raise CampaignBadRequestError('Bad request in objective GetRequest: %s' % objective_id)
     42         if status_code != OK:
     43             raise CampaignRequestError('Received error status code for objective GetRequest: %s' % status_code)
     44         info_log += 'Response: Objectives: GetResponse: {response}'.format(response=response)
     45         logger.info(info_log)
     46         return ObjectiveDefinition.from_proto(objective_id, response)
     47 
     48     def get_status_request(self, objective_id):
     49         request = GetStatusRequest(objective=objective_id.to_proto())
     50         info_log = 'Request: Objectives: GetStatusRequest: {request}\n'.format(request=request)
     51         try:
     52             response_primitive, response = self.public_gateway.send_blocking_character_request_and_receive_response(request_payload=request, expected_response_class=GetStatusResponse, timeout_seconds=4, max_attempts=2, retry_delay_in_seconds=1)
     53         except (TimeoutException, UnpackException) as exc:
     54             info_log += 'ERROR: %s' % exc.__class__.__name__
     55             logger.info(info_log)
     56             raise CampaignRequestError('Failed to receive response from objective GetStatusRequest: %s' % exc)
     57 
     58         status_code = response_primitive.status_code
     59         if status_code == NOT_FOUND:
     60             raise CampaignNotFoundError('Could not find requested objective in GetStatusRequest: %s' % objective_id)
     61         if status_code == BAD_REQUEST:
     62             raise CampaignBadRequestError('Bad request in objective GetStatusRequest: %s' % objective_id)
     63         if status_code != OK:
     64             raise CampaignRequestError('Received error status code for objective GetStatusRequest: %s' % status_code)
     65         info_log += 'Response: Objectives: GetStatusResponse: {response}'.format(response=response)
     66         logger.info(info_log)
     67         return (ObjectiveStatus.from_status_proto(objective_id, response), [ TrackStatus.from_status_proto(track) for track in response.tracks ])
     68 
     69     def get_participant_status_request(self, objective_id):
     70         request = GetParticipantStatusRequest(objective=objective_id.to_proto())
     71         info_log = 'Request: Objectives: GetParticipantStatusRequest: {request}\n'.format(request=request)
     72         try:
     73             response_primitive, response = self.public_gateway.send_blocking_character_request_and_receive_response(request_payload=request, expected_response_class=GetParticipantStatusResponse, timeout_seconds=4, max_attempts=2, retry_delay_in_seconds=1)
     74         except (TimeoutException, UnpackException) as exc:
     75             info_log += 'ERROR: %s' % exc.__class__.__name__
     76             logger.info(info_log)
     77             raise CampaignRequestError('Failed to receive response from GetParticipantStatusRequest: %s' % exc)
     78 
     79         status_code = response_primitive.status_code
     80         if status_code == NOT_FOUND:
     81             raise CampaignNotFoundError('Could not find requested objective in GetParticipantStatusRequest: %s' % objective_id)
     82         if status_code == BAD_REQUEST:
     83             raise CampaignBadRequestError('Bad request in GetParticipantStatusRequest: %s' % objective_id)
     84         if status_code == UNAUTHORIZED:
     85             raise CampaignUnauthorizedError('Unauthorized in GetParticipantStatusRequest: %s' % objective_id)
     86         if status_code != OK:
     87             raise CampaignRequestError('Received error status code for GetParticipantStatusRequest: %s' % status_code)
     88         info_log += 'Response: Objectives: GetParticipantStatusResponse: {response}'.format(response=response)
     89         logger.info(info_log)
     90         track_participant_stats = {TrackID.from_proto(track.id):TrackParticipantStats.from_proto(track.stats) for track in response.tracks}
     91         return (ObjectiveParticipantStats.from_proto(response), track_participant_stats)