def _CheckResponseStatus(self, response): if response.status_code == 200: return content = response.content json_str = content[len(self.JSON_PREFIX):] try: # TODO(hanuszczak): `json` package should not be used. parsed_json = json.loads(json_str) message = parsed_json["message"] + "\n" + parsed_json.get( "traceBack", "") except (ValueError, KeyError): message = content if response.status_code == 403: raise errors.AccessForbiddenError(message) elif response.status_code == 404: raise errors.ResourceNotFoundError(message) elif response.status_code == 422: raise errors.InvalidArgumentError(message) elif response.status_code == 501: raise errors.ApiNotImplementedError(message) else: raise errors.UnknownError(message)
def _CallMethod(self, method_name, args): router = self._MatchRouter(method_name, args) rdf_args = None if args is not None: mdata = router.__class__.GetAnnotatedMethods()[method_name] rdf_args = mdata.args_type() rdf_args.ParseFromString(args.SerializeToString()) method = getattr(router, method_name) try: handler = method(rdf_args, token=self._token) return handler.Handle(rdf_args, token=self._token) except access_control.UnauthorizedAccess as e: traceback.print_exc() raise errors.AccessForbiddenError(e.message) except api_call_handler_base.ResourceNotFoundError as e: traceback.print_exc() raise errors.ResourceNotFoundError(e.message) except NotImplementedError as e: traceback.print_exc() raise errors.ApiNotImplementedError(e.message) except Exception as e: # pylint: disable=broad-except traceback.print_exc() raise errors.UnknownError(e.message)
def _CheckResponseStatus(self, response): if response.status_code == 200: return content = response.content json_str = content[len(self.JSON_PREFIX):] try: parsed_json = json.loads(json_str) message = parsed_json["message"] except (ValueError, KeyError): message = content if response.status_code == 403: raise errors.AccessForbiddenError(message) elif response.status_code == 404: raise errors.ResourceNotFoundError(message) elif response.status_code == 501: raise errors.ApiNotImplementedError(message) else: raise errors.UnknownError(message)
def _CallMethod(self, method_name, args): router = self._MatchRouter(method_name, args) rdf_args = None if args is not None: mdata = router.__class__.GetAnnotatedMethods()[method_name] rdf_args = mdata.args_type.FromSerializedBytes( args.SerializeToString()) method = getattr(router, method_name) try: handler = method(rdf_args, context=self._context) return handler.Handle(rdf_args, context=self._context) except access_control.UnauthorizedAccess as e: raise errors.AccessForbiddenError(e) except api_call_handler_base.ResourceNotFoundError as e: raise errors.ResourceNotFoundError(e) except NotImplementedError: raise errors.ApiNotImplementedError( "Method {} is not implemented in {}.".format( method_name, compatibility.GetName(type(router)))) except Exception as e: # pylint: disable=broad-except raise errors.UnknownError(e)