def process_request(self, request): """ Handle received request from user. :param request: request from user. """ logger.info("\"{method} {url}\" args={args}".format( method=request.method, url=request.url, args=request.args)) response = Response() try: url = self.extract_url(request) handler, args, kwargs = self.search_handler(request, url) # Invoke handler for request if handler: for middleware in self.middlewares: middleware.process_request(request, handler) # Search serializer for response format = request.get_argument('format') serializer = handler.get_renderer(format, *args, **kwargs) response.content = handler.dispatch(request, *args, **kwargs) else: raise NotSpecifiedHandler() except BaseAPIException as exc: logger.exception(exc) response.wrap_exception(exc) serializer = JSONRenderer() response.append_request(request) return serializer.render(response.content)
def test_append_request(self): data = {'url': '/api', 'method': 'GET'} request = Request(**data) response = Response() response.append_request(request) self.assertEqual( response.content['request'], request.to_representation() )
def process_request(self, request): """ Handle received request from user. :param request: request from user. """ logger.info("\"{method} {url}\" args={args}".format( method=request.method, url=request.url, args=request.args) ) response = Response() try: url = self.extract_url(request) handler, args, kwargs = self.search_handler(request, url) # Invoke handler for request if handler: for middleware in self.middlewares: middleware.process_request(request, handler) # Search serializer for response format = request.get_argument('format') serializer = handler.get_renderer(format, *args, **kwargs) response.content = handler.dispatch(request, *args, **kwargs) else: raise NotSpecifiedHandler() except BaseAPIException as exc: logger.exception(exc) response.wrap_exception(exc) serializer = JSONRenderer() response.append_request(request) return serializer.render(response.content)
def test_append_request_with_undefined_event_name(self): options = {'url': '/api', 'method': 'GET'} request = Request(**options) response = Response() response.append_request(request) self.assertEqual(response.content['event_name'], request.event_name)