Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Simple Python library to interface with Superfeedr's pubsubhubbub interface.

branch: master

Fetching latest commit…

Octocat-spinner-32-eaf2f5

Cannot retrieve the latest commit at this time

Octocat-spinner-32 .gitignore
Octocat-spinner-32 LICENSE
Octocat-spinner-32 README.rst
Octocat-spinner-32 pubsubsuperfeedr.py
Octocat-spinner-32 setup.py
Octocat-spinner-32 tests.py
README.rst

pubsubsuperfeedr

A simple library designed to make it easy to add and remove feeds from Superfeedr's PubSubHubbub API. Includes support for hub.secret.

Credits

Developed and used at Urban Airship and released under the MIT License.

Harper Reed's gae-superfeedr-shell provided inspiration for part of this code. Thanks Harper!

Example Usage

Setting up pubsubsuperfeedr:

>>> import pubsubsuperfeedr
>>> sf = pubsubsuperfeedr.Superfeedr(settings.SUPERFEEDR_USERNAME, settings.SUPERFEEDR_PASSWORD)

Validating a feed to make sure that it has at least one readable entry:

>>> sf.verify_feed_url("http://blog.urbanairship.com/feed/")
True

Note that this is just a really simple wrapper around feedparser and sometimes feedparser can read things that Superfeedr can't.

Adding a feed:

>>> sf.add_feed("http://blog.urbanairship.com/feed/", "http://example.com/your_callback_url", "some_verify_token", "some_secret")

add_feed expects the feed you're wanting to watch, then the callback URL, and optionally a verify token and feed secret.

Removing a feed:

>>> sf.remove_feed("http://blog.urbanairship.com/feed/", "http://example.com/your_callback_url", "some_secret")

Removing a feed is basically the same as adding a feed.

Verifying a secret (in Django):

>>> sf.verify_secret("some_secret", request.raw_post_data, request.META.get("HTTP_X_HUB_SIGNATURE", ""))
True

Testing

To run the tests, first make sure that nose and mox are installed. Then:

$ nosetests

And you're off an running.

Something went wrong with that request. Please try again.