Python + Webhooks mMade Easy
Project description
Python + Webhooks Made Easy
Free software: BSD license
Documentation: http://webhooks.rtfd.org.
WARNING This project is in a pre-alpha state. It’s not ready for use on ANYTHING.
Python Versions
Currently works in:
Python 2.7
Python 3.3
Existing Features
Easy to integrate into any package or project
Comes with several built-in senders for synchronous webhooks.
Comes with a RedisQ-powered asynchronous webhook.
Extendable functionality through the use of custom senders and hash functions.
Planned Features
Comes with many built-in senders for synchronous and asynchronous webhooks.
Special functions for combining multiple sends of identical payloads going to one target into one.
Follows http://resthooks.org patterns
Great documentation
Compatibility with PyPy
Usage
Follow these easy steps:
Import the webhook decorator.
Define a function that returns a JSON-serializable dictionary or iterable.
Add the webhook decorator and pass in a sender_callable.
Call the function!
Synchronous example (async examples to come soon):
>>> from webhooks import webhook
>>> from webhooks.senders import targeted
>>> @webhook(sender_callable=targeted.sender)
>>> def basic(url, wife, husband):
>>> return {"husband": husband, "wife": wife}
>>> r = basic(url="http://httpbin.org/post", husband="Danny", wife="Audrey")
>>> import pprint
>>> pprint.pprint(r)
{'attempt': 1,
'hash': '29788eb987104b8a87d201292fa459d9',
'husband': 'Danny',
'response': b'{\n "args": {},\n "data": "",\n "files": {},\n "form": {\n "attempt": "1",\n "hash": "29788eb987104b8a87d201292fa459d9",\n "husband": "Danny",\n "url": "http://httpbin.org/post",\n "wife": "Audrey"\n },\n "headers": {\n "Accept": "*/*",\n "Accept-Encoding": "gzip, deflate",\n "Connection": "close",\n "Content-Length": "109",\n "Content-Type": "application/x-www-form-urlencoded",\n "Host": "httpbin.org",\n "User-Agent": "python-requests/2.3.0 CPython/3.3.5 Darwin/12.3.0",\n "X-Request-Id": "d25119e4-08ba-4523-abc4-b9a9ac10225b"\n },\n "json": null,\n "origin": "108.185.146.101",\n "url": "http://httpbin.org/post"\n}',
'status_code': 200,
'url': 'http://httpbin.org/post',
'wife': 'Audrey'}
Projects Powered by Webhooks
History
0.4.2 (2014-05-22)
Convert python-requests bytes to string when using Python 3
0.4.1 (2014-05-22)
Replaced json262 with standardjson package.
0.4.0 (2014-05-20)
Replaced utils.encoders with json262 package.
utf-8 encoding everywhere
Add from `__future__ import absolute_import everywhere.
0.3.2 (2014-05-17)
Brought in simplified cached_property decorator
0.3.1 (2014-05-15)
Added more Senderable attributes to make it easier to track what’s going on.
Added the missing webhooks.sender package to setup.py.
0.3.0 (2014-05-14)
Added extensible Senderable class to expedite creating new senders.
Added async_redis sender.
Added travis-ci.
0.2.0 (2014-05-13)
Added functioning hook decorator.
Ramped up test coverage.
Hash functions placed in their own module.
Cleaned up JSON encoder thanks to Audrey Roy Greenfeld!
0.1.0 (2014-05-07)
First release on PyPI.