def _parse_main_response(self, response_raw, subrequests):
self.log.debug('Parsing main RPC response...')
if response_raw.status_code == 403:
raise ServerSideAccessForbiddenException("Seems your IP Address is banned or something else went badly wrong...")
elif response_raw.status_code == 502:
raise ServerBusyOrOfflineException("502: Bad Gateway")
elif response_raw.status_code != 200:
error = 'Unexpected HTTP server response - needs 200 got {}'.format(response_raw.status_code)
self.log.warning(error)
self.log.debug('HTTP output: \n%s', response_raw.content.decode('utf-8'))
raise UnexpectedResponseException(error)
if response_raw.content is None:
self.log.warning('Empty server response!')
return False
response_proto = ResponseEnvelope()
try:
response_proto.ParseFromString(response_raw.content)
except message.DecodeError as e:
self.log.warning('Could not parse response: %s', e)
return False
self.log.debug('Protobuf structure of rpc response:\n\r%s', response_proto)
try:
self.log.debug('Decode raw over protoc (protoc has to be in your PATH):\n\r%s', self.decode_raw(response_raw.content).decode('utf-8'))
except:
self.log.debug('Error during protoc parsing - ignored.')
response_proto_dict = protobuf_to_dict(response_proto)
response_proto_dict = self._parse_sub_responses(response_proto, subrequests, response_proto_dict)
return response_proto_dict
评论列表
文章目录