Example #1
0
    def get_all(self, vault_id, file_id):

        vault = Vault.get(request.project_id, vault_id)

        assert vault is not None

        f = vault.get_file(file_id)

        if not f:
            abort(404)

        inmarker = int(request.params.get('marker', 0))
        limit = int(request.params.get('limit',
           conf.api_configuration.max_returned_num))

        # Get the block generator from the metadata driver.
        # Note: +1 on limit is to fetch one past the limt
        # for the purpose of determining if the
        # list was truncated
        retblks = deuce.metadata_driver.create_file_block_generator(
            request.project_id, vault_id, file_id, inmarker, limit + 1)

        resp = list(retblks)

        truncated = len(resp) > 0 and len(resp) == limit + 1
        outmarker = resp.pop()[1] if truncated else None

        if outmarker:
            query_args = {'marker': outmarker}
            query_args['limit'] = limit

            returl = set_qs(request.url, query_args)
            response.headers["X-Next-Batch"] = returl

        return resp
Example #2
0
    def get_all(self, vault_id):

        vault = Vault.get(request.project_id, vault_id)

        if not vault:
            response.status_code = 404
            return

        inmarker = request.params.get('marker')

        limit = int(request.params.get('limit',
           conf.api_configuration.max_returned_num))

        # We actually fetch the user's requested
        # limit +1 to detect if the list is being
        # truncated or not.
        blocks = vault.get_blocks(inmarker, limit + 1)

        # List the blocks into JSON and return.
        # TODO: figure out a way to stream this back(??)
        resp = list(blocks)

        # Was the list truncated? See note above about +1
        truncated = len(resp) > 0 and len(resp) == limit + 1

        outmarker = resp.pop().block_id if truncated else None

        if outmarker:
            query_args = {'marker': outmarker}
            query_args['limit'] = limit
            returl = set_qs(request.url, query_args)
            response.headers["X-Next-Batch"] = returl

        return resp
Example #3
0
    def get_all(self, vault_id):

        vault = Vault.get(request.project_id, vault_id)

        if not vault:
            abort(404)

        inmarker = request.params.get('marker')
        limit = int(request.params.get('limit',
           conf.api_configuration.max_returned_num))

        # The +1 is to fetch one past the user's
        # requested limit so that we can determine
        # if the list was truncated or not
        files = vault.get_files(inmarker, limit + 1)

        resp = list(files)

        # Note: the list may not actually be truncated
        truncated = len(resp) == limit + 1

        outmarker = resp.pop().file_id if truncated else None

        if outmarker:
            query_args = {'marker': outmarker}
            query_args['limit'] = limit

            returl = set_qs(request.url, query_args)

            response.headers["X-Next-Batch"] = returl

        return resp
Example #4
0
    def test_set_qs(self):
        url = 'http://whatever:8080/hello/world?param1=value1&param2=value2'

        # Empty case
        testurl = set_qs(url)
        self.assertEqual(testurl, 'http://whatever:8080/hello/world')

        positive_cases = [
            {'whatever': '3'},
            {'hello': 'whatever'},
            {'yes': u'whatever'}
        ]

        for args in positive_cases:
            output = set_qs(url, args)
            parts = parse.urlparse(output)

            qs = parts.query
            output = parse.parse_qs(qs)
Example #5
0
    def test_set_qs(self):
        url = 'http://whatever:8080/hello/world?param1=value1&param2=value2'

        # Empty case
        testurl = set_qs_on_url(url)
        self.assertEqual(testurl, 'http://whatever:8080/hello/world')

        positive_cases = [{
            'whatever': '3'
        }, {
            'hello': 'whatever'
        }, {
            'yes': u'whatever'
        }]

        for args in positive_cases:
            output = set_qs(url, args)
            parts = parse.urlparse(output)

            qs = parts.query
            output = parse.parse_qs(qs)
Example #6
0
    def test_set_qs_on_url(self):
        url = 'http://whatever:8080/hello/world'

        # Empty case
        query_string = set_qs(url, args={'param1': 'value1'})
        self.assertEqual('param1=value1', query_string)
Example #7
0
    def test_set_qs_on_url(self):
        url = 'http://whatever:8080/hello/world'

        # Empty case
        query_string = set_qs(url, args={'param1': 'value1'})
        self.assertEqual('param1=value1', query_string)