Facepy makes it really easy to interact with Facebook's Graph API
Project description
Facepy
======
.. image:: https://secure.travis-ci.org/jgorset/facepy.png?branch=master
Facepy makes it really easy to interact with Facebook's Graph API.
Usage
-----
::
from facepy import GraphAPI
# Initialize the Graph API with a valid access token (optional,
# but will allow you to do all sorts of fun stuff).
graph = GraphAPI(oauth_access_token)
# Get my latest posts
graph.get('me/posts')
# Post a photo of a parrot
graph.post(
path = 'me/photos',
source = open('parrot.jpg', 'rb')
)
Facepy can do more than reading your latest posts and posting photographs of parrots, but you'll have to
`read the documentation <http://readthedocs.org/docs/facepy>`_ to find out how.
Installation
------------
::
$ pip install facepy
Contribute
----------
* Fork `the repository <http://github.com/jgorset/facepy>`_.
* Do your thing (preferably on a feature branch).
* Write a test that demonstrates that the bug was fixed or the feature works as expected.
* Send a pull request and bug me until I merge it!
I love you
----------
Johannes Gorset made this. You should `tweet me <http://twitter.com/jgorset>`_ if you can't get it
to work. In fact, you should tweet me anyway.
I love Hyper
------------
I work at Hyper with a bunch of awesome folks who are all every bit as passionate about good code
as myself. If you're using this library, we probably want to hire you.
History
-------
1.0.1
++++
* Fixed an issue where *six* would cause an ``ImportError`` unless already
installed. It is now a direct dependency.
1.0.0
+++++
* ``GraphAPI`` now supports securing Graph API requests with application secret proofs.
* ``GraphAPI#post`` now supports user-generated images.
* The last bit of the tuple returned from ``get_extended_access_token`` is now ``None``
if the access token won't expire.
* ``GraphAPI#batch`` can now handle more than 50 requests at a time.
* Fixed a bug that caused unicode URLs to fail.
0.9.0
+++++
* Changed ``GraphAPI`` methods to return ``decimal.Decimal`` instances for
floating-point numbers instead of ``float``, which can cause precision
losses not acceptable for financial operations.
* Fixed a bug that caused parsing signed requests to fail when the ``user`` key
is not present.
* Nested dictionaries, lists and sets are now automatically encoded as JSON.
* You may now elect to not verify Facebook's SSL certificate.
* You may now substitute colons with underscores in keys such as ``fb:explicitly_shared``.
* Facepy is now compatible with Python 3.
0.8.4
+++++
* Fixed a bug that caused a KeyError for signed requests that were missing
some keys for its "page" attribute.
0.8.3
+++++
* Fixed a bug that caused batch requests with a body to fail.
* You may now extend access tokens with ``get_extended_access_token``.
* Fixed a bug that caused paths that started with a slash to fail.
* Fixed a bug that caused exception messages to be omitted.
0.8.2
+++++
* Facepy exceptions may now be pickled.
0.8.1
+++++
* Fixed a bug that caused pagination to stop prematurely.
0.8.0
+++++
* You may now query application access tokens with ``get_application_access_token``.
* ``SignedRequest.parse`` now returns a dictionary describing the payload of the signed request
instead of a ``SignedRequest`` instance.
* ``SignedRequest.__init__`` now accepts arguments ``signed_request`` and ``application_secret_key`` and no longer
facilitates for constructing arbitrary signed requests.
* ``SignedRequest#generate`` no longer requires the provision of ``application_secret_key``.
* ``SignedRequest#oauth_token`` and ``SignedRequest.OAuthToken`` have been removed (deprecated since v0.6).
* Fixed a bug that caused some exceptions to be returned rather than raised.
* ``GraphAPI`` now supports retries for ``get``, ``post``, ``delete``, ``search`` and ``fql``.
* ``GraphAPI#get`` is now more intelligent about pagination and should no longer query Facebook for another page
of results if the current page has less elements than ``limit``.
Note: This release is backwards-incompatible.
0.7.0
+++++
* You may now access the original data of the signed request from ``SignedRequest#raw``.
* You may now issue FQL queries with ``GraphAPI#fql``.
* Fixed a bug that caused ``GraphAPI#batch`` to crash upon receiving legacy errors from Facebook.
* ``FacebookError`` exceptions yielded from ``GraphAPI#batch`` now include the request that
produced the error.
0.6.9
+++++
* Facepy will now raise ``OAuthError`` for authorization-related errors.
* Facepy will now reuse the connection to Facebook.
0.6.8
+++++
* Fixed a bug that caused a KeyError upon parsing errors without an error code.
0.6.7
+++++
* Fixed a bug that caused some errors to be ignored.
* Facepy now raises ``GraphAPI.HTTPError`` for requests whose transport failed,
and ``GraphAPI.FacebookError`` for requests that produced an error in Facebook's API.
* Fixed a bug that caused an error for empty batch responses.
0.6.6
+++++
* Facepy now supports batch requests.
0.6.5
+++++
* Updated requests.
0.6.4
+++++
* Fixed a bug that caused SignedRequest.User#has_authorized_application to be incorrect for
signed requests with an user id, but no OAuth Token.
* Fixed a bug that caused queries that returned 3xx status codes to yield a blank string
0.6.3
+++++
* Fixed a bug that caused installation to fail in some circumstances.
0.6.2
+++++
* Fixed a bug that caused a KeyError upon parsing a signed request that didn't include the user's age.
0.6.1
++++++
* Fixed a bug that caused a NameError upon providing a list of strings as a Graph API parameter.
0.6.0
+++++
* Search results may now be paged.
* 'facepy.VERSION' is now 'facepy.__version__'
0.5.1
+++++
* It is now considerably easier to create signed requests programmatically.
0.5.0
+++++
* Facepy now returns the complete API response instead of just its "data" attribute.
Note: This release is backwards-incompatible.
0.4.2
+++++
* Facepy is now compatible with Python 2.4.
* Fixed a bug that caused a KeyError if the user's locale or country is missing from the signed request.
0.4.1
+++++
* Fixed a bug that caused a TypeError upon parsing signed requests in unicode.
0.4.0
+++++
* Added support for parsing and reverse-engineering signed requests.
* Added support for file-like objects in POST and PUT.
0.3.1
+++++
* Fixed a bug that prevented the 'page' argument to GraphAPI#get from working
correctly.
0.3.0
+++++
* GraphAPI#get now has a new argument 'page', which returns a generator
that iterates over each page of results.
0.2.3
+++++
* The GraphAPI class may now be initialized by signed request.
0.2.2
+++++
* Fix a bug that caused non-JSON data (e.g. pictures) to raise a ValueError.
0.2.1
+++++
* Fix a bug that caused a TypeError if the 'path' argument is an integer.
0.2.0
+++++
* Exceptions have been moved.
======
.. image:: https://secure.travis-ci.org/jgorset/facepy.png?branch=master
Facepy makes it really easy to interact with Facebook's Graph API.
Usage
-----
::
from facepy import GraphAPI
# Initialize the Graph API with a valid access token (optional,
# but will allow you to do all sorts of fun stuff).
graph = GraphAPI(oauth_access_token)
# Get my latest posts
graph.get('me/posts')
# Post a photo of a parrot
graph.post(
path = 'me/photos',
source = open('parrot.jpg', 'rb')
)
Facepy can do more than reading your latest posts and posting photographs of parrots, but you'll have to
`read the documentation <http://readthedocs.org/docs/facepy>`_ to find out how.
Installation
------------
::
$ pip install facepy
Contribute
----------
* Fork `the repository <http://github.com/jgorset/facepy>`_.
* Do your thing (preferably on a feature branch).
* Write a test that demonstrates that the bug was fixed or the feature works as expected.
* Send a pull request and bug me until I merge it!
I love you
----------
Johannes Gorset made this. You should `tweet me <http://twitter.com/jgorset>`_ if you can't get it
to work. In fact, you should tweet me anyway.
I love Hyper
------------
I work at Hyper with a bunch of awesome folks who are all every bit as passionate about good code
as myself. If you're using this library, we probably want to hire you.
History
-------
1.0.1
++++
* Fixed an issue where *six* would cause an ``ImportError`` unless already
installed. It is now a direct dependency.
1.0.0
+++++
* ``GraphAPI`` now supports securing Graph API requests with application secret proofs.
* ``GraphAPI#post`` now supports user-generated images.
* The last bit of the tuple returned from ``get_extended_access_token`` is now ``None``
if the access token won't expire.
* ``GraphAPI#batch`` can now handle more than 50 requests at a time.
* Fixed a bug that caused unicode URLs to fail.
0.9.0
+++++
* Changed ``GraphAPI`` methods to return ``decimal.Decimal`` instances for
floating-point numbers instead of ``float``, which can cause precision
losses not acceptable for financial operations.
* Fixed a bug that caused parsing signed requests to fail when the ``user`` key
is not present.
* Nested dictionaries, lists and sets are now automatically encoded as JSON.
* You may now elect to not verify Facebook's SSL certificate.
* You may now substitute colons with underscores in keys such as ``fb:explicitly_shared``.
* Facepy is now compatible with Python 3.
0.8.4
+++++
* Fixed a bug that caused a KeyError for signed requests that were missing
some keys for its "page" attribute.
0.8.3
+++++
* Fixed a bug that caused batch requests with a body to fail.
* You may now extend access tokens with ``get_extended_access_token``.
* Fixed a bug that caused paths that started with a slash to fail.
* Fixed a bug that caused exception messages to be omitted.
0.8.2
+++++
* Facepy exceptions may now be pickled.
0.8.1
+++++
* Fixed a bug that caused pagination to stop prematurely.
0.8.0
+++++
* You may now query application access tokens with ``get_application_access_token``.
* ``SignedRequest.parse`` now returns a dictionary describing the payload of the signed request
instead of a ``SignedRequest`` instance.
* ``SignedRequest.__init__`` now accepts arguments ``signed_request`` and ``application_secret_key`` and no longer
facilitates for constructing arbitrary signed requests.
* ``SignedRequest#generate`` no longer requires the provision of ``application_secret_key``.
* ``SignedRequest#oauth_token`` and ``SignedRequest.OAuthToken`` have been removed (deprecated since v0.6).
* Fixed a bug that caused some exceptions to be returned rather than raised.
* ``GraphAPI`` now supports retries for ``get``, ``post``, ``delete``, ``search`` and ``fql``.
* ``GraphAPI#get`` is now more intelligent about pagination and should no longer query Facebook for another page
of results if the current page has less elements than ``limit``.
Note: This release is backwards-incompatible.
0.7.0
+++++
* You may now access the original data of the signed request from ``SignedRequest#raw``.
* You may now issue FQL queries with ``GraphAPI#fql``.
* Fixed a bug that caused ``GraphAPI#batch`` to crash upon receiving legacy errors from Facebook.
* ``FacebookError`` exceptions yielded from ``GraphAPI#batch`` now include the request that
produced the error.
0.6.9
+++++
* Facepy will now raise ``OAuthError`` for authorization-related errors.
* Facepy will now reuse the connection to Facebook.
0.6.8
+++++
* Fixed a bug that caused a KeyError upon parsing errors without an error code.
0.6.7
+++++
* Fixed a bug that caused some errors to be ignored.
* Facepy now raises ``GraphAPI.HTTPError`` for requests whose transport failed,
and ``GraphAPI.FacebookError`` for requests that produced an error in Facebook's API.
* Fixed a bug that caused an error for empty batch responses.
0.6.6
+++++
* Facepy now supports batch requests.
0.6.5
+++++
* Updated requests.
0.6.4
+++++
* Fixed a bug that caused SignedRequest.User#has_authorized_application to be incorrect for
signed requests with an user id, but no OAuth Token.
* Fixed a bug that caused queries that returned 3xx status codes to yield a blank string
0.6.3
+++++
* Fixed a bug that caused installation to fail in some circumstances.
0.6.2
+++++
* Fixed a bug that caused a KeyError upon parsing a signed request that didn't include the user's age.
0.6.1
++++++
* Fixed a bug that caused a NameError upon providing a list of strings as a Graph API parameter.
0.6.0
+++++
* Search results may now be paged.
* 'facepy.VERSION' is now 'facepy.__version__'
0.5.1
+++++
* It is now considerably easier to create signed requests programmatically.
0.5.0
+++++
* Facepy now returns the complete API response instead of just its "data" attribute.
Note: This release is backwards-incompatible.
0.4.2
+++++
* Facepy is now compatible with Python 2.4.
* Fixed a bug that caused a KeyError if the user's locale or country is missing from the signed request.
0.4.1
+++++
* Fixed a bug that caused a TypeError upon parsing signed requests in unicode.
0.4.0
+++++
* Added support for parsing and reverse-engineering signed requests.
* Added support for file-like objects in POST and PUT.
0.3.1
+++++
* Fixed a bug that prevented the 'page' argument to GraphAPI#get from working
correctly.
0.3.0
+++++
* GraphAPI#get now has a new argument 'page', which returns a generator
that iterates over each page of results.
0.2.3
+++++
* The GraphAPI class may now be initialized by signed request.
0.2.2
+++++
* Fix a bug that caused non-JSON data (e.g. pictures) to raise a ValueError.
0.2.1
+++++
* Fix a bug that caused a TypeError if the 'path' argument is an integer.
0.2.0
+++++
* Exceptions have been moved.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
facepy-1.0.1.tar.gz
(11.7 kB
view hashes)