{ "info": { "author": "Daniel Greenfeld", "author_email": "pydanny@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Natural Language :: English", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4" ], "description": "===============================\nwebhooks\n===============================\n\n.. image:: https://pypip.in/d/webhooks/badge.png\n :target: https://pypi.python.org/pypi/webhooks\n\n.. image:: https://badge.fury.io/py/webhooks.png\n :target: https://badge.fury.io/py/webhooks\n\n.. image:: https://travis-ci.org/pydanny/webhooks.png\n :alt: Build Status\n :target: https://travis-ci.org/pydanny/webhooks\n\n.. image:: https://pypip.in/wheel/webhooks/badge.png\n :target: https://pypi.python.org/pypi/webhooks/\n :alt: Wheel Status\n\nPython + Webhooks Made Easy\n\n* Free software: BSD license\n* Documentation: http://webhooks.rtfd.org.\n\n**WARNING** This project is in a pre-alpha state. It's not ready for use on ANYTHING.\n\nPython Versions\n----------------\n\nCurrently works in:\n\n * Python 2.7\n * Python 3.3\n\nExisting Features\n------------------\n\n* Easy to integrate into any package or project\n* Comes with several built-in senders for synchronous webhooks.\n* Comes with a RedisQ-powered asynchronous webhook.\n* Extendable functionality through the use of custom senders and hash functions.\n\nPlanned Features\n-----------------\n\n* Comes with many built-in senders for synchronous and asynchronous webhooks.\n* Special functions for combining multiple sends of identical payloads going to one target into one.\n* Follows http://resthooks.org patterns\n* Great documentation\n* Compatibility with PyPy\n\nUsage\n-----\n\nFollow these easy steps:\n\n1. Import the ``webhook`` decorator.\n2. Define a function that returns a JSON-serializable dictionary or iterable.\n3. Add the ``webhook`` decorator and pass in a ``sender_callable``.\n4. Call the function!\n\nSynchronous example (async examples to come soon):\n\n.. code-block:: python\n\n >>> from webhooks import webhook\n >>> from webhooks.senders import targeted\n\n >>> @webhook(sender_callable=targeted.sender)\n >>> def basic(url, wife, husband):\n >>> return {\"husband\": husband, \"wife\": wife}\n\n >>> r = basic(url=\"http://httpbin.org/post\", husband=\"Danny\", wife=\"Audrey\")\n >>> import pprint\n >>> pprint.pprint(r)\n {'attempt': 1,\n 'hash': '29788eb987104b8a87d201292fa459d9',\n 'husband': 'Danny',\n '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}',\n 'status_code': 200,\n 'url': 'http://httpbin.org/post',\n 'wife': 'Audrey'}\n \n\n\nProjects Powered by Webhooks\n----------------------------\n\n* https://github.com/pydanny/dj-webhooks\n\n\n\n\nHistory\n-------\n\n0.4.2 (2014-05-22)\n+++++++++++++++++++\n\n* Convert python-requests bytes to string when using Python 3\n\n0.4.1 (2014-05-22)\n+++++++++++++++++++\n\n* Replaced `json262` with `standardjson` package.\n\n0.4.0 (2014-05-20)\n++++++++++++++++++\n\n* Replaced `utils.encoders` with `json262` package.\n* utf-8 encoding everywhere\n* Add `from `__future__ import absolute_import` everywhere.\n\n0.3.2 (2014-05-17)\n++++++++++++++++++\n\n* Brought in simplified `cached_property` decorator\n\n\n0.3.1 (2014-05-15)\n++++++++++++++++++\n\n* Added more Senderable attributes to make it easier to track what's going on.\n* Added the missing webhooks.sender package to setup.py.\n\n\n0.3.0 (2014-05-14)\n++++++++++++++++++\n\n* Added extensible Senderable class to expedite creating new senders.\n* Added async_redis sender.\n* Added travis-ci.\n\n0.2.0 (2014-05-13)\n++++++++++++++++++\n\n* Added functioning hook decorator.\n* Ramped up test coverage.\n* Hash functions placed in their own module.\n* Cleaned up JSON encoder thanks to Audrey Roy Greenfeld!\n\n0.1.0 (2014-05-07)\n++++++++++++++++++\n\n* First release on PyPI.", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/pydanny/webhooks", "keywords": "webhooks", "license": "BSD", "maintainer": null, "maintainer_email": null, "name": "webhooks", "package_url": "https://pypi.org/project/webhooks/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/webhooks/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/pydanny/webhooks" }, "release_url": "https://pypi.org/project/webhooks/0.4.2/", "requires_dist": null, "requires_python": null, "summary": "Python + Webhooks mMade Easy", "version": "0.4.2" }, "last_serial": 1101340, "releases": { "0.1.0": [], "0.2.0": [ { "comment_text": "", "digests": { "md5": "472b2f319bf5e06141d4fe4b2866a28d", "sha256": "a00be2e1fe5da82ac076b0c69ca383cce98dda8c9baaffeb6b96f52b57790bdc" }, "downloads": -1, "filename": "webhooks-0.2.0.tar.gz", "has_sig": false, "md5_digest": "472b2f319bf5e06141d4fe4b2866a28d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13564, "upload_time": "2014-05-13T19:18:44", "url": "https://files.pythonhosted.org/packages/4b/af/257e06890328156a2e865a1e30b3343df20f51864518a4d50e7a5d90d3a5/webhooks-0.2.0.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "ed601c89244bd9833a6067533d2121a0", "sha256": "b1927be5889dfbe31e06643629957c83d3df33c1509c7edc66e410e67be72deb" }, "downloads": -1, "filename": "webhooks-0.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ed601c89244bd9833a6067533d2121a0", "packagetype": "bdist_wheel", "python_version": "3.3", "requires_python": null, "size": 7088, "upload_time": "2014-05-14T21:09:04", "url": "https://files.pythonhosted.org/packages/37/55/9be231aaa4a457e19cdfe96534247e920cced80f82e7ed6776d5c05b6fbc/webhooks-0.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "dbd2a3d25e6c40cdea5e10cabc07b62b", "sha256": "45ef159125480462afb2bdb7fe897b0f0f00b040cbf50fff650879040669497b" }, "downloads": -1, "filename": "webhooks-0.3.0.tar.gz", "has_sig": false, "md5_digest": "dbd2a3d25e6c40cdea5e10cabc07b62b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15294, "upload_time": "2014-05-14T21:09:02", "url": "https://files.pythonhosted.org/packages/a3/b5/97d835bb44a389b3a82fa69952f4e915cf6f4f47785891db03b913f5bbc6/webhooks-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "7c2f43b22b98b37f2eb2e299daa4db69", "sha256": "040cb814fa2ebee39c6c47dc028f4464ee96a988382ea440ea64d25215a09371" }, "downloads": -1, "filename": "webhooks-0.3.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "7c2f43b22b98b37f2eb2e299daa4db69", "packagetype": "bdist_wheel", "python_version": "3.3", "requires_python": null, "size": 9831, "upload_time": "2014-05-15T15:55:28", "url": "https://files.pythonhosted.org/packages/12/7a/2e43371cb6dfe10062fdcf95136a1c0b938e9ab988aa4bf1f09998c5a646/webhooks-0.3.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "131eca529e9a95eb5c3cb7fea96d486b", "sha256": "1f938a1c496911a9ed81c4f7bac4f82edabda83911a0c3be57057a548b4c1fc6" }, "downloads": -1, "filename": "webhooks-0.3.1.tar.gz", "has_sig": false, "md5_digest": "131eca529e9a95eb5c3cb7fea96d486b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17350, "upload_time": "2014-05-15T15:55:25", "url": "https://files.pythonhosted.org/packages/8a/a7/fb311b9d2a9abd4e7740d2be139260b801cd3080ada7ee3b1b1e875ca73d/webhooks-0.3.1.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "3c32b0ca4668ef797540f5b517ef1826", "sha256": "4494bf33f170fd1c0163d45e1d4e06964336f37a28d315796232acb27f34b9b8" }, "downloads": -1, "filename": "webhooks-0.3.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "3c32b0ca4668ef797540f5b517ef1826", "packagetype": "bdist_wheel", "python_version": "3.3", "requires_python": null, "size": 9301, "upload_time": "2014-05-18T00:15:56", "url": "https://files.pythonhosted.org/packages/8d/2e/9061e8c177aba762f533f1e0d5fe8e5ef7e6d22c581ac55875d505ae8325/webhooks-0.3.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "397ff493188357148d088d187673c740", "sha256": "e4a8ad850c9be651dcea9e25b197918c94effcd6c1c93c1058acad08465fe5e1" }, "downloads": -1, "filename": "webhooks-0.3.2.tar.gz", "has_sig": false, "md5_digest": "397ff493188357148d088d187673c740", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16859, "upload_time": "2014-05-18T00:15:53", "url": "https://files.pythonhosted.org/packages/d0/81/d7ecea12053adf6998c290822b12f3b5681d00dfcda77137b4527d3d3895/webhooks-0.3.2.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "4d5dd3b75f48875e82f1a47a7a4781c1", "sha256": "a3096d7f014be3a08f5b62ee8e376e568dea33ababbe45af20e63576a9ef77eb" }, "downloads": -1, "filename": "webhooks-0.4.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "4d5dd3b75f48875e82f1a47a7a4781c1", "packagetype": "bdist_wheel", "python_version": "3.3", "requires_python": null, "size": 9674, "upload_time": "2014-05-20T17:48:41", "url": "https://files.pythonhosted.org/packages/ea/ce/792cfaad60e9c9a8a550b4076029dd1f709c2c9fe64a8211d6ffe500eaed/webhooks-0.4.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "58f2dedf7af0bc442f16d9d749c24352", "sha256": "94979fa8c78ab1b1d621965205ef8ad4dd43feb09f575e55076c4276cdacdcee" }, "downloads": -1, "filename": "webhooks-0.4.0.tar.gz", "has_sig": false, "md5_digest": "58f2dedf7af0bc442f16d9d749c24352", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15786, "upload_time": "2014-05-20T17:48:38", "url": "https://files.pythonhosted.org/packages/ee/d0/2823151aa80f67d78b0d428f2a215512edd2c4cf824871e924c17c42d5d7/webhooks-0.4.0.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "66a3ff58f95cc8ce7443b53511643c5d", "sha256": "232a3d750c8eac6b4b8a838e24822fb88f65a72651c8df7f035b2e9fe193014b" }, "downloads": -1, "filename": "webhooks-0.4.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "66a3ff58f95cc8ce7443b53511643c5d", "packagetype": "bdist_wheel", "python_version": "3.3", "requires_python": null, "size": 10566, "upload_time": "2014-05-22T16:29:41", "url": "https://files.pythonhosted.org/packages/af/70/9604a954e2da4d2fbe36b9434abe246b7868ddb1e72be7472472d480c302/webhooks-0.4.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8fe6c1c27957f79e675510f7f869f8d2", "sha256": "2b57e878b4eac6bd0b506b7c3375ba6581537c977a6540b1e7f576ee19708988" }, "downloads": -1, "filename": "webhooks-0.4.1.tar.gz", "has_sig": false, "md5_digest": "8fe6c1c27957f79e675510f7f869f8d2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16776, "upload_time": "2014-05-22T16:29:38", "url": "https://files.pythonhosted.org/packages/ce/3f/c9375c39fcaaec70aa42df844e3d1a98bcf50fd0c08202e89c8a57c738db/webhooks-0.4.1.tar.gz" } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "f8a08e50918d34d9fc6093acac6f02f2", "sha256": "d705c5d8e6d3b485dae3071657360f22795b78bb0fa2652b00c7b086a2ffc05f" }, "downloads": -1, "filename": "webhooks-0.4.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f8a08e50918d34d9fc6093acac6f02f2", "packagetype": "bdist_wheel", "python_version": "3.3", "requires_python": null, "size": 10703, "upload_time": "2014-05-22T17:57:53", "url": "https://files.pythonhosted.org/packages/62/83/7db35bd3e26831bcc7f6970a5ff7668b9dcfb4898bb509e4e5b8a97756d4/webhooks-0.4.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "550e3de702043bc9800f49a7ae4b1247", "sha256": "092eefbd6da5f182b8629a63f90401b75ebf34a8079da60a747aef309201b2f9" }, "downloads": -1, "filename": "webhooks-0.4.2.tar.gz", "has_sig": false, "md5_digest": "550e3de702043bc9800f49a7ae4b1247", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17034, "upload_time": "2014-05-22T17:57:50", "url": "https://files.pythonhosted.org/packages/10/75/631a233b438e908cb938e16bed0cac176d16d0931d7d251980267bfa3556/webhooks-0.4.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "f8a08e50918d34d9fc6093acac6f02f2", "sha256": "d705c5d8e6d3b485dae3071657360f22795b78bb0fa2652b00c7b086a2ffc05f" }, "downloads": -1, "filename": "webhooks-0.4.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f8a08e50918d34d9fc6093acac6f02f2", "packagetype": "bdist_wheel", "python_version": "3.3", "requires_python": null, "size": 10703, "upload_time": "2014-05-22T17:57:53", "url": "https://files.pythonhosted.org/packages/62/83/7db35bd3e26831bcc7f6970a5ff7668b9dcfb4898bb509e4e5b8a97756d4/webhooks-0.4.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "550e3de702043bc9800f49a7ae4b1247", "sha256": "092eefbd6da5f182b8629a63f90401b75ebf34a8079da60a747aef309201b2f9" }, "downloads": -1, "filename": "webhooks-0.4.2.tar.gz", "has_sig": false, "md5_digest": "550e3de702043bc9800f49a7ae4b1247", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17034, "upload_time": "2014-05-22T17:57:50", "url": "https://files.pythonhosted.org/packages/10/75/631a233b438e908cb938e16bed0cac176d16d0931d7d251980267bfa3556/webhooks-0.4.2.tar.gz" } ] }