Example #1
0
    def wrapped(*args, **kwargs):
        if authenticator:
            authenticator.authenticate()

        if query_string_schema:
            g.validated_args = get_query_string_params_or_400(
                schema=query_string_schema)

        if request_body_schema:
            g.validated_body = get_json_body_params_or_400(
                schema=request_body_schema)

        if headers_schema:
            g.validated_headers = get_header_params_or_400(
                schema=headers_schema)

        rv = f(*args, **kwargs)

        if not marshal_schema:
            return rv

        data, status_code, headers = _unpack_view_func_return_value(rv)

        schema = marshal_schema[status_code]  # May raise KeyError.

        # The schema may be declared as None to bypass marshaling (e.g. for 204 responses).
        if schema is None:
            return make_response((data or '', status_code, headers))

        marshaled = marshal(data=data, schema=schema)
        return response(data=marshaled,
                        status_code=status_code,
                        headers=headers)
Example #2
0
    def wrapped(*args, **kwargs):
        if authenticator:
            authenticator.authenticate()

        if query_string_schema:
            g.validated_args = get_query_string_params_or_400(
                schema=query_string_schema)

        if request_body_schema:
            g.validated_body = get_json_body_params_or_400(
                schema=request_body_schema)

        if headers_schema:
            g.validated_headers = get_header_params_or_400(
                schema=headers_schema)

        rv = f(*args, **kwargs)

        if marshal_schema:
            if isinstance(rv, tuple):
                data, status_code = rv[0], rv[1]
            else:
                data, status_code = rv, 200

            try:
                schema = marshal_schema[status_code]
            except KeyError:
                raise

            if schema is None:
                # Allow for the schema to be declared as None, which allows
                # for status codes with no bodies (i.e. a 204 status code)
                return response(data=data, status_code=status_code)

            marshaled = marshal(data=data, schema=schema)

            return response(data=marshaled, status_code=status_code)

        else:
            return rv
Example #3
0
 def get_swagger():
     swagger = self.swagger_generator.generate(registry=self,
                                               host=request.host)
     return response(data=swagger)