def process_response(self, context, response, **kwargs): if not response.successful: return response try: if context.is_direct_resource(): authorizer = context.resource_class.desc.authorizer authorizer.authorize_response(context, response, **kwargs) elif context.is_related_resource(): base_authorizer = context.resource_manager.resource_class.desc.authorizer response = base_authorizer.authorize_response(context, response, **kwargs) related_authorizer = context.resource_class.desc.authorizer response = related_authorizer.authorize_response(context, response, **kwargs) else: msg = "unknown resource type" logging.error(msg) response = ExceptionResponse(AuthorizationError(msg)) except AuthorizationError as error: logging.warning(repr(error)) response = ExceptionResponse(error) except Exception as error: logging.exception(error) response = ExceptionResponse(AuthorizationError(str(error))) return response
def process_request(self, context, request, **kwargs): response = None try: if context.is_direct_resource(): authorizer = context.resource_class.desc.authorizer context.query = authorizer.authorize_query(context, request, context.query) elif context.is_related_resource(): base_authorizer = context.resource_manager.resource_class.desc.authorizer context.query = base_authorizer.authorize_query(context, request, context.query) related_authorizer = context.resource_class.desc.authorizer context.query = related_authorizer.authorize_query(context, request, context.query) else: msg = "unknown resource tpe" logging.error(msg) response = ExceptionResponse(AuthorizationError(msg)) resource_map = loaded_resource_map(context.data) for resource_class, resources in resource_map.items(): authorizer = resource_class.desc.authorizer authorizer.authorize_query_resources( context=context, resources=resources, query=context.query) except AuthorizationError as error: logging.warning(repr(error)) response = ExceptionResponse(error) except Exception as error: logging.exception(error) response = ExceptionResponse(AuthorizationError(str(error))) return response
def process_request(self, context, request, **kwargs): response = None try: if context.is_direct_resource(): query = self._build_query(context, request, **kwargs) elif context.is_related_resource(): query = self._build_related_query(context, request, **kwargs) context.query = query except InvalidQuery as error: logging.warning(repr(error)) response = ExceptionResponse(error) except ValidationError as error: logging.warning(repr(error)) response = ExceptionResponse(error) except Exception as error: logging.exception(error) response = ExceptionResponse(InvalidQuery()) return response
def process_request(self, context, request, **kwargs): try: if context.is_direct_resource(): authenticator = context.resource_class.desc.authenticator authenticator.authenticate_request(context, request, **kwargs) elif context.is_related_resource(): base_authenticator = context.resource_manager.resource_class.desc.authenticator base_authenticator.authenticate_request(context, request, **kwargs) related_authenticator = context.resource_class.desc.authenticator related_authenticator.authenticate_request(context, request, **kwargs) else: msg = "unknown resource tyoe" logging.error(msg) return ExceptionResponse(AuthenticationError(msg)) except AuthenticationError as error: logging.warning(repr(error)) return ExceptionResponse(error) except Exception as error: logging.exception(error) return ExceptionResponse(AuthenticationError(str(error))) return None
def process_request(self, context, request, **kwargs): response = None with session_store_pool.get() as session_store: session = session_store.get_session(request.cookie("sessionid")) if session: context.session = session context.user_id = session.user_id() context.tenant_id = session.tenant_id() else: context.session = None context.user_id = None context.tenant_id = None try: authenticator = context.resource_class.desc.authenticator authenticator.authenticate_request(context, request, **kwargs) except AuthenticationError as error: logging.warning(repr(error)) response = ExceptionResponse(error) except Exception as error: logging.exception(error) return ExceptionResponse(AuthenticationError(str(error))) return response
def process_request(self, context, request, **kwargs): response = None body = request.body() if body: try: content_type = request.header( "content-type") or DEFAULT_CONTENT_TYPE format = CONTENT_TYPE_FORMAT.get(content_type, DEFAULT_FORMAT) result = [] if context.bulk else context.resource_class() try: serializer = context.resource_class.serializer context.data = serializer.deserialize( api=self.api, resource_uri=context.path, resource=result, format=format, data=body) except: result = context.resource_class() context.data = serializer.deserialize( api=self.api, resource=result, resource_uri=context.path, format=format, data=body) context.bulk = False except ValidationError as error: logging.warning(repr(error)) response = ExceptionResponse(error) except Exception as error: logging.exception(error) response = ExceptionResponse( ValidationError("invalid request")) else: context.data = None return response
def dispatch(self, context, request, **kwargs): try: response_code = 200 if context.resource_class: if request.method() == "GET": if context.bulk: result = context.query.all() else: result = context.query.one() elif request.method() == "POST": if context.bulk: result = context.query.bulk_create( resources=context.data) else: result = context.query.create(resource=context.data) response_code = 201 elif request.method() == "PUT": if context.bulk: result = context.query.bulk_update( resources=context.data) else: result = context.query.update(resource=context.data) if result is None: response_code = 204 elif request.method() == "DELETE": if context.bulk: result = context.query.bulk_delete( resources=context.data) else: result = context.query.delete() if result is None: response_code = 204 else: result = None response_code = 204 response = Response(code=response_code, data=result) except RestException as error: logging.warning(repr(error)) response = ExceptionResponse(error) except Exception as error: logging.exception(error) raise return response