Esempio n. 1
0
def retreive_next_page(key, seed, args, callback, initial_bookmark=None):
    """
    An helper for the bookmark pager.

    :param key: the private key of you API
    :param seed: the crypo seed for this session
    :param args: the verbatim filtering+paging arguments
    :param callback: a function that takes (a dictionary of filters, the current bookmark, the page size)
                 and return a tuple (next_results, dictionary_ready_for_next_iteration, approx_number_of_element_left)
    :param initial_bookmark: pass here an optional initial bookmark for the first request
    :return: the tuple result_list and new encrypted bookmark
    """
    filter = dict(args)
    if 'pager_info' in filter:
        initial_bookmark = decrypt(filter.pop('pager_info'), key, seed)

    page_size = filter.pop('page_size', DEFAULT_PAGE_SIZE)

    result_list, new_bookmark, approx_result_size = callback(filter, initial_bookmark, page_size)

    # restore for the next iteration
    filter['pager_info'] = encrypt(new_bookmark, key, seed)
    filter['page_size'] = page_size

    return result_list, filter, approx_result_size
Esempio n. 2
0
def retrieve_next_page(key, seed, args, callback, initial_bookmark=None):
    """
    A helper for the bookmark pager.

    :param key: the private key of you API
    :param seed: the crypo seed for this session
    :param args: the verbatim filtering+paging arguments
    :param callback: a function that takes (a dictionary of filters, the current bookmark, the page size)
                 and return a tuple (next_results, dictionary_ready_for_next_iteration, approx_number_of_element_left)
    :param initial_bookmark: pass here an optional initial bookmark for the first request
    :return: the tuple result_list and new encrypted bookmark
    """
    filter = dict(args)
    if 'pager_info' in filter:
        initial_bookmark = decrypt(filter.pop('pager_info'), key, seed)

    page_size = filter.pop('page_size', DEFAULT_PAGE_SIZE)

    result_list, new_bookmark, approx_result_size = callback(
        filter, initial_bookmark, page_size)

    # restore for the next iteration
    filter['pager_info'] = encrypt(new_bookmark, key, seed)
    filter['page_size'] = page_size

    return result_list, filter, approx_result_size
Esempio n. 3
0
 def test_encrypt_decrypt(self):
     key = '0123456789abcdef0123456789abcdef'
     seed = 'deadbeefcafebabe'
     message = 'It should go through'
     self.assertEqual(decrypt(encrypt(message, key, seed), key, seed), message)