Source code for contentful.sync_page

from six.moves.urllib.parse import urlsplit, parse_qs

from .resource import Resource


"""
contentful.sync_page
~~~~~~~~~~~~~~~~~~~~

This module implements the SyncPage class.

API Reference: https://www.contentful.com/developers/docs/references/content-delivery-api/#/reference/synchronization

:copyright: (c) 2016 by Contentful GmbH.
:license: MIT, see LICENSE for more details.
"""


[docs]class SyncPage(Resource): """ API Reference: https://www.contentful.com/developers/docs/references/content-delivery-api/#/reference/synchronization """ def __init__(self, item, **kwargs): super(SyncPage, self).__init__(item, **kwargs) self.next_sync_url = item.get('nextSyncUrl', '') self.next_page_url = item.get('nextPageUrl', '') self.next_sync_token = self._get_sync_token() self.items = self._hydrate_items()
[docs] def next(self, client): """Fetches next SyncPage :param client: CDA Client. :return: :class:`SyncPage <SyncPage>` :rtype: contentful.sync_page.SyncPage """ return client.sync({'sync_token': self.next_sync_token})
def _get_sync_token(self): url_parts = urlsplit(self.next_sync_url or self.next_page_url) querystring = parse_qs(url_parts.query) return querystring['sync_token'][0] def _hydrate_items(self): from .resource_builder import ResourceBuilder items = [] for item in self.raw.get('items', []): items.append( ResourceBuilder( self.default_locale, True, item ).build() ) return items def __repr__(self): return "<SyncPage next_sync_token='{0}'>".format( self.next_sync_token )