예제 #1
0
        def create_collection(**path_data):
            request_data = load_request_data(definition.request_schema)
            # NB: if we don't filter the request body through an explicit page schema,
            # we will leak other request arguments into the pagination query strings
            page = self.page_cls.from_query_string(self.page_schema(),
                                                   request_data)

            result = definition.func(**merge_data(
                path_data,
                merge_data(
                    request_data,
                    page.to_dict(func=identity),
                ),
            ))

            response_data, headers = page.to_paginated_list(
                result, ns, Operation.CreateCollection)
            definition.header_func(headers, response_data)
            response_format = self.negotiate_response_content(
                definition.response_formats)
            return dump_response_data(
                paginated_list_schema,
                response_data,
                headers=headers,
                response_format=response_format,
            )
예제 #2
0
 def create(**path_data):
     request_data = load_request_data(definition.request_schema)
     response_data = require_response_data(
         definition.func(**merge_data(path_data, request_data)))
     return dump_response_data(definition.response_schema,
                               response_data,
                               Operation.CreateFor.value.default_code)
예제 #3
0
 def update_batch(**path_data):
     request_data = load_request_data(definition.request_schema)
     response_data = definition.func(
         **merge_data(path_data, request_data))
     return dump_response_data(definition.response_schema,
                               response_data,
                               operation.value.default_code)
예제 #4
0
 def update(**path_data):
     # NB: using partial here means that marshmallow will not validate required fields
     request_data = load_request_data(definition.request_schema,
                                      partial=True)
     response_data = require_response_data(
         definition.func(**merge_data(path_data, request_data)))
     return dump_response_data(definition.response_schema,
                               response_data)
예제 #5
0
 def replace(**path_data):
     request_data = load_request_data(definition.request_schema)
     # Replace/put should create a resource if not already present, but we do not
     # enforce these semantics at the HTTP layer. If `func` returns falsey, we
     # will raise a 404.
     response_data = require_response_data(
         definition.func(**merge_data(path_data, request_data)))
     return dump_response_data(definition.response_schema,
                               response_data)
 def foo_command():
     """
     My doc string
     """
     request_data = load_request_data(request_schema)
     response_data = dict(
         result=True,
         value=request_data["value"],
     )
     return dump_response_data(response_schema, response_data, Operation.Command.value.default_code)
예제 #7
0
 def foo_command():
     """
     My doc string
     """
     request_data = load_request_data(request_schema)
     response_data = dict(
         result=True,
         value=request_data["value"],
     )
     return dump_response_data(response_schema, response_data, Operation.Command.value.default_code)
예제 #8
0
 def update(**path_data):
     headers = dict()
     # NB: using partial here means that marshmallow will not validate required fields
     request_data = load_request_data(definition.request_schema, partial=True)
     response_data = require_response_data(definition.func(**merge_data(path_data, request_data)))
     definition.header_func(headers, response_data)
     response_format = self.negotiate_response_content(definition.response_formats)
     return dump_response_data(
         definition.response_schema,
         response_data,
         headers=headers,
         response_format=response_format,
     )
예제 #9
0
 def update_batch(**path_data):
     headers = dict()
     request_data = load_request_data(definition.request_schema)
     response_data = definition.func(**merge_data(path_data, request_data))
     definition.header_func(headers, response_data)
     response_format = self.negotiate_response_content(definition.response_formats)
     return dump_response_data(
         definition.response_schema,
         response_data,
         status_code=operation.value.default_code,
         headers=headers,
         response_format=response_format,
     )
예제 #10
0
 def create(**path_data):
     request_data = load_request_data(definition.request_schema)
     response_data = definition.func(**merge_data(path_data, request_data))
     headers = encode_id_header(response_data)
     definition.header_func(headers, response_data)
     response_format = self.negotiate_response_content(definition.response_formats)
     return dump_response_data(
         definition.response_schema,
         response_data,
         status_code=Operation.Create.value.default_code,
         headers=headers,
         response_format=response_format,
     )
예제 #11
0
 def saved_search(**path_data):
     request_data = load_request_data(definition.request_schema)
     page = self.page_cls.from_dict(request_data)
     request_data.update(page.to_dict(func=identity))
     result = definition.func(**merge_data(path_data, request_data))
     response_data, headers = page.to_paginated_list(result, ns, Operation.SavedSearch)
     definition.header_func(headers, response_data)
     response_format = self.negotiate_response_content(definition.response_formats)
     return dump_response_data(
         paginated_list_schema,
         response_data,
         headers=headers,
         response_format=response_format,
     )
예제 #12
0
 def update(**path_data):
     headers = dict()
     request_data = load_request_data(definition.request_schema)
     response_data = require_response_data(
         definition.func(**merge_data(path_data, request_data)))
     definition.header_func(headers, response_data)
     response_format = self.negotiate_response_content(
         definition.response_formats)
     return dump_response_data(
         definition.response_schema,
         response_data,
         headers=headers,
         response_format=response_format,
     )
예제 #13
0
 def replace(**path_data):
     headers = dict()
     request_data = load_request_data(definition.request_schema)
     # Replace/put should create a resource if not already present, but we do not
     # enforce these semantics at the HTTP layer. If `func` returns falsey, we
     # will raise a 404.
     response_data = require_response_data(definition.func(**merge_data(path_data, request_data)))
     definition.header_func(headers, response_data)
     response_format = self.negotiate_response_content(definition.response_formats)
     return dump_response_data(
         definition.response_schema,
         response_data,
         headers=headers,
         response_format=response_format,
     )
예제 #14
0
 def saved_search(**path_data):
     request_data = load_request_data(definition.request_schema)
     page = self.page_cls.from_dict(request_data)
     request_data.update(page.to_dict(func=identity))
     result = definition.func(**merge_data(path_data, request_data))
     response_data, headers = page.to_paginated_list(
         result, ns, Operation.SavedSearch)
     definition.header_func(headers, response_data)
     response_format = self.negotiate_response_content(
         definition.response_formats)
     return dump_response_data(
         paginated_list_schema,
         response_data,
         headers=headers,
         response_format=response_format,
     )
예제 #15
0
        def create_collection(**path_data):
            request_data = load_request_data(definition.request_schema)
            # NB: if we don't filter the request body through an explicit page schema,
            # we will leak other request arguments into the pagination query strings
            page = self.page_cls.from_query_string(self.page_schema(), request_data)

            result = definition.func(**merge_data(
                path_data,
                merge_data(
                    request_data,
                    page.to_dict(func=identity),
                ),
            ))

            response_data, headers = page.to_paginated_list(result, ns, Operation.CreateCollection)
            definition.header_func(headers, response_data)
            response_format = self.negotiate_response_content(definition.response_formats)
            return dump_response_data(
                paginated_list_schema,
                response_data,
                headers=headers,
                response_format=response_format,
            )
예제 #16
0
        def create_collection(**path_data):
            request_data = load_request_data(definition.request_schema)
            page = self.page_cls.from_query_string(self.page_schema(), {})

            result = definition.func(**merge_data(
                path_data,
                merge_data(
                    request_data,
                    page.to_dict(func=identity),
                ),
            ))

            response_data, headers = page.to_paginated_list(
                result, ns, Operation.CreateCollection)
            definition.header_func(headers, response_data)
            response_format = self.negotiate_response_content(
                definition.response_formats)
            return dump_response_data(
                paginated_list_schema,
                response_data,
                headers=headers,
                response_format=response_format,
            )