This is a prototype implementation of a client
for discovery based APIs.

Installation
============

To install, simply say

   $ python setup.py install --record=files.txt

to install the files and record what files are installed in files.txt.

If you want to do a "mock install" and simply extend your PYTHONPATH
for the current shell to include this folder and the packages in it, do

   $ source setpath.sh

from the root of the project directory.


Uninstall
=========

   $ cat files.txt | xargs rm -rf

You may need root privileges to do this.


Running
=======

First run three-legged-dance.py to get OAuth
tokens for Buzz, which will be stored in
buzz.dat in the working directory.

   $ python samples/buzz/three_legged_dance.py

Then run buzz.py, which will use the apiclient
library to retrieve the title of the most
recent entry in Buzz and post a test message.

   $ python samples/buzz/buzz.py

After following the install directions (using setup.py or setpath.sh) you
should be able to cd to samples/cmdline and run the code from there.


Third Party Libraries
====================

http://code.google.com/p/httplib2
http://code.google.com/p/uri-templates
http://github.com/simplegeo/python-oauth2
