/atomgen

Generate new valid atom entries every x minutes (for testing purposes)

Primary LanguagePython

atomgen
========

Infinite Atom Entries Generator


Overview
---------

The application providing two feeds. First one generating Atom entries every
minute and the second one - every 5 minutes. 
The feeds can be used mostly for testing webhooks, pubsubhubbub etc.

The one minute feed is protected by a secret token in the end of the URL.
If your application is installed for example on URL http://example.com/ , 
the two feeds will be:

  http://example.com/feed/1/YouSecretHere    (1min feed)
  http://example.com/feed/5                  (5min feed)


Usage
------

The application is currently deployed on Google AppEngine. You can use the
5 minutes feed for your tests - go to http://pubsubhubbub.appspot.com/subscribe 
and subscribe for the http://atomgen.appspot.com/feed/5 topic. This will send 
to your subscribers a new Atom entry every 5 minutes.

There is also a FriendFeed group - http://friendfeed.com/atomgen , which is already
subscribed to the 5 minutes feed. You can use it to gen notifications via IM etc.


Implementation details
-----------------------

The feeds have atom:link[@rel="hub"] element and the 5 minutes feed is pinging the
hub on feed generation. By default the Google's reference implementation on URL
http://pubsubhubbub.appspot.com/ is used. Your can change the hub with the
HUB_URL option in the settings.py file.

I tried to make the atom generator a good Internet cityzen by setting up the proper
HTTP headers ('Last-Modified', 'ETag' etc.). 'Etag' header contains the ID of the
last entry, cryptography signed, like suggested in 
http://code.google.com/p/pubsubhubbub/wiki/PublisherEfficiency

The current implementation does not use Google Datastore. Feeds are kept only in 
the memcached object caching system.


TODO
-----
- Return only new entries for clients asking with 'If-None-Match' header (ETag)