Beispiel #1
0
        def discover():
            request_data = load_query_string_data(ValidateSwaggerSchema())

            swagger = build_swagger(self.graph, ns,
                                    self.find_matching_endpoints(ns),
                                    **request_data)
            g.hide_body = True
            return make_response(swagger)
Beispiel #2
0
def test_page_from_query_string():
    graph = create_object_graph(name="example", testing=True)

    with graph.flask.test_request_context():
        qs = load_query_string_data(PageSchema())
        page = Page.from_query_string(qs)
        assert_that(page.offset, is_(equal_to(0)))
        assert_that(page.limit, is_(equal_to(20)))
    def from_query_string(cls, schema, qs=None):
        """
        Extract a page from the current query string.

        :param qs: a query string dictionary (`request.args` will be used if omitted)

        """
        dct = load_query_string_data(schema, qs)
        return cls.from_dict(dct)
Beispiel #4
0
    def from_query_string(cls, schema, qs=None):
        """
        Extract a page from the current query string.

        :param qs: a query string dictionary (`request.args` will be used if omitted)

        """
        dct = load_query_string_data(schema, qs)
        return cls.from_dict(dct)
 def foo_query():
     """
     My doc string
     """
     request_data = load_query_string_data(request_schema)
     response_data = dict(
         result=True,
         value=request_data["value"],
     )
     return dump_response_data(response_schema, response_data, Operation.Query.value.default_code)
Beispiel #6
0
 def foo_query():
     """
     My doc string
     """
     request_data = load_query_string_data(request_schema)
     response_data = dict(
         result=True,
         value=request_data["value"],
     )
     return dump_response_data(response_schema, response_data, Operation.Query.value.default_code)
Beispiel #7
0
        def retrieve(**path_data):
            # request_schema is optional for Alias
            request_data = (load_query_string_data(definition.request_schema)
                            if definition.request_schema else dict())
            resource = definition.func(**merge_data(path_data, request_data))

            kwargs = dict()
            identifier = "{}_id".format(name_for(ns.subject))
            kwargs[identifier] = resource.id
            url = ns.url_for(Operation.Retrieve, **kwargs)

            return redirect(url)
Beispiel #8
0
 def retrieve(**path_data):
     headers = dict()
     request_data = load_query_string_data(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,
     )
Beispiel #9
0
 def count(**path_data):
     request_data = load_query_string_data(definition.request_schema)
     response_data = dict()
     count = definition.func(**merge_data(path_data, request_data))
     headers = encode_count_header(count)
     definition.header_func(headers, response_data)
     response_format = self.negotiate_response_content(definition.response_formats)
     return dump_response_data(
         None,
         None,
         headers=headers,
         response_format=response_format,
     )
Beispiel #10
0
 def delete(**path_data):
     headers = dict()
     request_data = load_query_string_data(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(
         "",
         None,
         status_code=Operation.Delete.value.default_code,
         headers=headers,
         response_format=response_format,
     )
Beispiel #11
0
        def discover():
            # accept pagination limit from request
            page = Page.from_query_string(load_query_string_data(page_schema))
            page.offset = 0

            response_data = dict(_links=Links({
                "self":
                Link.for_(Operation.Discover, ns, qs=page.to_tuples()),
                "search": [
                    link for link in iter_links(
                        self.find_matching_endpoints(ns), page)
                ],
            }).to_dict())
            return make_response(response_data)
Beispiel #12
0
        def retrieve(**path_data):
            # request_schema is optional for Alias
            request_data = (
                load_query_string_data(definition.request_schema)
                if definition.request_schema
                else dict()
            )
            resource = definition.func(**merge_data(path_data, request_data))

            kwargs = dict()
            identifier = "{}_id".format(name_for(ns.subject))
            kwargs[identifier] = resource.id
            url = ns.url_for(Operation.Retrieve, **kwargs)

            return redirect(url)
Beispiel #13
0
        def search(**path_data):
            request_data = load_query_string_data(definition.request_schema)
            page = Page.from_query_string(request_data)
            items, count, context = definition.func(
                **merge_data(path_data, request_data))

            response_data = self.paginated_list_class(
                ns=ns,
                page=page,
                items=items,
                count=count,
                schema=definition.response_schema,
                operation=Operation.SearchFor,
                **context)
            return dump_response_data(paginated_list_schema, response_data)
        def upload(**path_data):
            merged_data = merge_data(request.args.to_dict(), request.form.to_dict())
            request_data = load_query_string_data(request_schema, merged_data)

            if not request.files:
                raise BadRequest("No files were uploaded")

            uploads = [
                temporary_upload(name, fileobj)
                for name, fileobj
                in request.files.items()
                if not self.exclude_func(name, fileobj)
            ]
            with nested(*uploads) as files:
                response_data = definition.func(files, **merge_data(path_data, request_data))
                if response_data is None:
                    return "", 204

            return dump_response_data(response_schema, response_data, operation.value.default_code)
Beispiel #15
0
        def upload(**path_data):
            request_data = load_query_string_data(request_schema)

            if not request.files:
                raise BadRequest("No files were uploaded")

            uploads = [
                temporary_upload(name, fileobj)
                for name, fileobj in request.files.items()
                if not self.exclude_func(name, fileobj)
            ]
            with nested(*uploads) as files:
                response_data = definition.func(
                    files, **merge_data(path_data, request_data))
                if response_data is None:
                    return "", 204

            return dump_response_data(response_schema, response_data,
                                      operation.value.default_code)
Beispiel #16
0
        def search(**path_data):
            request_data = load_query_string_data(definition.request_schema)
            page = self.page_cls.from_query_string(request_data)
            return_value = definition.func(
                **merge_data(path_data, request_data))

            if len(return_value) == 3:
                items, count, context = return_value
            else:
                context = {}
                items, count = return_value

            response_data = PaginatedList(ns=ns,
                                          page=page,
                                          items=items,
                                          count=count,
                                          schema=definition.response_schema,
                                          operation=Operation.Search,
                                          **context)
            return dump_response_data(paginated_list_schema, response_data)
Beispiel #17
0
 def count(**path_data):
     request_data = load_query_string_data(definition.request_schema)
     count = definition.func(**merge_data(path_data, request_data))
     headers = encode_count_header(count)
     return dump_response_data(None, None, headers=headers)
Beispiel #18
0
 def current_health():
     query_params = load_query_string_data(RetrieveHealthSchema())
     response_data = self.health.to_dict(**query_params)
     status_code = 200 if response_data["ok"] else 503
     return make_response(response_data, status_code=status_code)
Beispiel #19
0
 def retrieve(**path_data):
     request_data = load_query_string_data(request_schema)
     response_data = require_response_data(
         definition.func(**merge_data(path_data, request_data)))
     return dump_response_data(definition.response_schema,
                               response_data)