示例#1
0
 def _ToJSON(self, value):
     if isinstance(value, semantic_pb2.AnyValue):
         proto = utils.TypeUrlToMessage(value.type_url)
         proto.ParseFromString(value.value)
         return self._ToJSON(proto)
     elif isinstance(value, message.Message):
         result = {}
         for descriptor, value in value.ListFields():
             result[descriptor.name] = self._ToJSON(value)
         return result
     else:
         return value
示例#2
0
    def SendRequest(self, handler_name, args):
        self._InitializeIfNeeded()
        method_descriptor = self.api_methods[handler_name]

        request = self.BuildRequest(method_descriptor, args)
        prepped_request = request.prepare()

        session = requests.Session()
        response = session.send(prepped_request)
        self._CheckResponseStatus(response)

        content = response.content
        json_str = content[len(self.JSON_PREFIX):]

        logger.debug("%s response (%s, %d):\n%s", request.method, request.url,
                     response.status_code, content)

        if method_descriptor.result_type_descriptor.name:
            default_value = method_descriptor.result_type_descriptor.default
            result = utils.TypeUrlToMessage(default_value.type_url)
            json_format.Parse(json_str, result)
            return result