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
=======

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.
The first time you run it you will be prompted
to authorize the application to access your
Buzz information.

   $ python samples/buzz/buzz.py

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


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

These libraries will be installed when you install the client library:

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