Beispiel #1
0
        def ensure_response(request):

            rv = yield from self._provider.local_dispatcher(request)

            status_or_headers = headers = None
            if isinstance(rv, tuple):
                rv, status_or_headers, headers = rv + (None,) * (3 - len(rv))

            if rv is None:
                raise HTTPInternalServerError()

            if isinstance(status_or_headers, (list, dict)):
                headers, status_or_headers = status_or_headers, None

            if not isinstance(rv, Response):

                data = rv

                rv = Response(headers=headers, status=status_or_headers or 200,
                              content_type='application/json')

                rv.text = json_serializer(data)
                headers = status_or_headers = None

            if status_or_headers is not None:
                if isinstance(status_or_headers, int):
                    rv.status = status_or_headers

            if headers:
                rv.headers.extend(headers)

            return rv