The Pugpig Readers use a well defined API to discover and download content. This API is implemented on the server by the Content Subsystem, which has three main components:
- The Notification Module makes the Pugpig client aware when new content is available
- The Edition Feed Module returns feeds for the list of editions, and the contents of each edition
- The Downloader Module handles the downloading of contents in the background.
The diagram above outlines the main interactions between these modules.
The Pugpig Readers use a well defined API to connect to servers. The high level summary of the interaction is:
- The entrypoint is an Open Publication Distribution System (OPDS) Catalog which lists all of the publications that could be downloaded
- The OPDS catalog references an Atom feed for each publication while contains a list of all the pages in the publication
- Each entry in the Atom feed contains a reference to the HTML that is the page, as well as an HTML5 cache manifest that enumerates all the assets needed to display the page offline
- A ZIP format can package the Atom feed, HTML files and all assets to reduce the number of requests made when downloading
API Definition and Examples
Details of the different API calls can be found here:
- Edition Atom Feed
- Simple Manifest Format
- Edition ZIP Format (uses the Atom format, but zips files into bundles)
- HTML5 Offline Manifest
The Notification Module sends a notification to the Pugpig clients when significant new content needs to be downloaded. For an edition based publication, this will normally be when a new edition is published. For a single edition continuous publication, this will be when a piece of Breaking News, for example, is published.
Once the client receives the push, it can choose to either:
- Prompt the user to download a new edition
- Automatically download new content in the background
One service that can be used to fulfill this component is Urban Airship which supports Push Notifications on many platforms. It is used by some of the existing Pugpig CMS Connectors.