Source code for boxsdk.pagination.page

# coding: utf-8

from __future__ import unicode_literals, absolute_import

from collections import Sequence
import copy


[docs]class Page(Sequence, object): """ A sequence of BaseObjects that belong to a page returned from a paging api call. The Page makes available detailed response data for page requests. """ _item_entries_key_name = "entries" def __init__(self, session, response_object): """ :param session: The Box session used to make the request that generated the response. :type session: :class:`BoxSession` :param response_object: The parsed HTTP response from Box after requesting more pages. :type response_object: `dict` """ super(Page, self).__init__() self._session = session self._response_object = response_object @property def _translator(self): """The translator used for translating Box API JSON responses into `BaseAPIJSONObject` smart objects. :rtype: :class:`Translator` """ return self._session.translator @property def response_object(self): """ Return a copy of the response object for this Page. :rtype: `dict` """ return copy.deepcopy(self._response_object) def __getitem__(self, key): """ Try to get the attribute from the API response object. :param key: The attribute to retrieve from the API response object. :type key: `unicode` :rtype: :class:`BaseObject` """ item_json = self._response_object[self._item_entries_key_name][key] return self._translator.translate(self._session, item_json) def __len__(self): """ Get the number of items in the page. :rtype: `int` """ return len(self._response_object[self._item_entries_key_name])