{ "info": { "author": "Veniamin Gvozdikov", "author_email": "g.veniamin@googlemail.com", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Topic :: Internet :: WWW/HTTP" ], "description": "aiohttp_jrpc\n============\n.. image:: https://travis-ci.org/zloidemon/aiohttp_jrpc.svg?branch=master\n :target: https://travis-ci.org/zloidemon/aiohttp_jrpc\n.. image:: https://coveralls.io/repos/zloidemon/aiohttp_jrpc/badge.svg\n :target: https://coveralls.io/r/zloidemon/aiohttp_jrpc\n.. image:: https://badge.fury.io/py/aiohttp_jrpc.svg\n :target: https://badge.fury.io/py/aiohttp_jrpc\n\njsonrpc_ protocol implementation for `aiohttp.web`__.\n\n__ aiohttp_web_\n\n\nExample server\n--------------\n\n.. code:: python\n\n import asyncio\n from aiohttp import web\n from aiohttp_jrpc import Service, JError, jrpc_errorhandler_middleware\n\n SCH = {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\"type\": \"string\"},\n },\n }\n\n @asyncio.coroutine\n def custom_errorhandler_middleware(app, handler):\n @asyncio.coroutine\n def middleware(request):\n try:\n return (yield from handler(request))\n except Exception:\n \"\"\" Custom errors: -32000 to -32099 \"\"\"\n return JError().custom(-32000, \"Example error\")\n return middleware\n\n class MyJRPC(Service):\n @Service.valid(SCH)\n def hello(self, ctx, data):\n if data[\"data\"] == \"hello\":\n return {\"status\": \"hi\"}\n return {\"status\": data}\n\n def error(self, ctx, data):\n raise Exception(\"Error which will catch middleware\")\n\n def no_valid(self, ctx, data):\n \"\"\" Method without validation incommig data \"\"\"\n return {\"status\": \"ok\"}\n\n @asyncio.coroutine\n def init(loop):\n app = web.Application(loop=loop, middlewares=[jrpc_errorhandler_middleware])\n #app = web.Application(loop=loop, middlewares=[custom_errorhandler_middleware])\n app.router.add_route('POST', \"/api\", MyJRPC)\n\n srv = yield from loop.create_server(app.make_handler(),\n \"127.0.0.1\", 8080)\n print(\"Server started at http://127.0.0.1:8080\")\n return srv\n\n loop = asyncio.get_event_loop()\n loop.run_until_complete(init(loop))\n try:\n loop.run_forever()\n except KeyboardInterrupt:\n pass\n\nExample client\n--------------\n\n.. code:: python\n\n import asyncio\n import aiohttp\n from aiohttp_jrpc import Client,InvalidResponse\n\n Remote = Client('http://localhost:8080/api')\n\n @asyncio.coroutine\n def rpc_call():\n try:\n rsp = yield from Remote.request('hello', {'data': 'hello'})\n return rsp\n except InvalidResponse as err:\n return err\n except Exception as err:\n return err\n return False\n\n loop = asyncio.get_event_loop()\n content = loop.run_until_complete(rpc_call())\n print(content.result)\n loop.close()\n\nLicense\n-------\n\n``aiohttp_jrpc`` BSD license.\n\n\n.. _jsonrpc: http://www.jsonrpc.org/specification\n.. _aiohttp_web: http://aiohttp.readthedocs.org/en/latest/web.html\n\nCHANGES\n=======\n\n0.1.0 (2016-02-20)\n\n* Added client and tests\n* Changed BSD v3 to BSD v2 license\n\n0.0.3 (2015-10-27)\n\n* Fix messages of protocol errors\n* Fix tests and add tests for custom errors\n* Fix example bugs\n* Added custom middleware to example for handle errors\n\n0.0.2 (2015-10-22)\n\n* Added middleware to catch exceptions\n* Testing internal error\n\n0.0.1 (2015-10-18)\n\n* Init release\n\nCredits\n=======\n\n``aiohttp_jrpc`` is written by `Veniamin Gvozdikov `_.\n\nContributors\n------------\n\n- `latyas(\u61d2) `_\n\nPlease add yourself here alphabetically when you submit your first pull request.", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/zloidemon/aiohttp_jrpc/", "keywords": "aiohttp jsonrpc rpc", "license": "BSD", "maintainer": "", "maintainer_email": "", "name": "aiohttp-jrpc", "package_url": "https://pypi.org/project/aiohttp-jrpc/", "platform": "any", "project_url": "https://pypi.org/project/aiohttp-jrpc/", "project_urls": { "Homepage": "https://github.com/zloidemon/aiohttp_jrpc/" }, "release_url": "https://pypi.org/project/aiohttp-jrpc/0.1.0/", "requires_dist": null, "requires_python": "", "summary": "JSON RPC protocol for aiohttp.web (http server for asyncio)", "version": "0.1.0" }, "last_serial": 1973776, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "44a041e24fa1934b6302616482624912", "sha256": "03b7cc542402d15cbb3785b52d739b30e05d48b4c962078c8c08422e830dfc4a" }, "downloads": -1, "filename": "aiohttp_jrpc-0.0.1-py3-none-any.whl", "has_sig": true, "md5_digest": "44a041e24fa1934b6302616482624912", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5738, "upload_time": "2015-10-20T16:19:43", "url": "https://files.pythonhosted.org/packages/b6/cc/edaac78a939ad5c0c4245b4a64e26899c8039a35cbb1bb4d40291b522994/aiohttp_jrpc-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6333f21d88f15894090ca6fc0f87eae1", "sha256": "8dff603a2d75233dd066754201c8d8177628461d31bb9f04f7d793e8715d9f9e" }, "downloads": -1, "filename": "aiohttp_jrpc-0.0.1.tar.gz", "has_sig": true, "md5_digest": "6333f21d88f15894090ca6fc0f87eae1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3679, "upload_time": "2015-10-20T16:19:48", "url": "https://files.pythonhosted.org/packages/ab/44/72af6d34ea181b3e4be0428737accf02cc2967ddec72a3adcbe93e708ae3/aiohttp_jrpc-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "b1c72dfd81b8b1e2f498d9cafb4952ba", "sha256": "2829880f9e0261a8c08602523a850c1eade0f1751ef422a57380bfbdd743d851" }, "downloads": -1, "filename": "aiohttp_jrpc-0.0.2-py3-none-any.whl", "has_sig": true, "md5_digest": "b1c72dfd81b8b1e2f498d9cafb4952ba", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6046, "upload_time": "2015-10-24T16:46:30", "url": "https://files.pythonhosted.org/packages/48/d9/e5d73f1ef969dc246f073477dd09a095f2b55c20650b1293c264a1098100/aiohttp_jrpc-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2aa22c7b6fc72eeb683a7bc5395dbdaa", "sha256": "3c7df5e423e0bc2f3df56bb9903277d1d114a1f3f79a76af70a7710cc1963de9" }, "downloads": -1, "filename": "aiohttp_jrpc-0.0.2.tar.gz", "has_sig": true, "md5_digest": "2aa22c7b6fc72eeb683a7bc5395dbdaa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3836, "upload_time": "2015-10-24T16:46:34", "url": "https://files.pythonhosted.org/packages/f8/ab/7b6e07ad00e7d8f320e186bcf1c7d37eda625c07fda53cb16d6ee709c6a0/aiohttp_jrpc-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "5101e698dffb5c3f4662d72217b75516", "sha256": "f1a9cc2c9247aaaed2de1a33f7b7dbfdbb74ec9bdc8dd97e787adf41a53ad310" }, "downloads": -1, "filename": "aiohttp_jrpc-0.0.3-py3-none-any.whl", "has_sig": true, "md5_digest": "5101e698dffb5c3f4662d72217b75516", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6810, "upload_time": "2015-10-27T10:28:05", "url": "https://files.pythonhosted.org/packages/54/e4/1f9507dc576c80a377e4a98165b26f9d9d9036308ad62e0271b59d9bec23/aiohttp_jrpc-0.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e6d2b120843f0b3d63614f2ce742e794", "sha256": "824f220d7d9a3e172db0c8d51d492802a364cee59068ac0dd48dc24b3f0ca816" }, "downloads": -1, "filename": "aiohttp_jrpc-0.0.3.tar.gz", "has_sig": true, "md5_digest": "e6d2b120843f0b3d63614f2ce742e794", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4354, "upload_time": "2015-10-27T10:28:20", "url": "https://files.pythonhosted.org/packages/3f/e6/ab8a241c4aaa7cad7ebde82dee3fb3b7b5649778b331362e0975d6b4f9aa/aiohttp_jrpc-0.0.3.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "d0662bb5fa64bb95aa3a86f843e2d8b6", "sha256": "6aa94ff20aa8c80e1987baa6551af018bdf9f135c06c7bdf09858561b9a7f515" }, "downloads": -1, "filename": "aiohttp_jrpc-0.1.0-py3-none-any.whl", "has_sig": true, "md5_digest": "d0662bb5fa64bb95aa3a86f843e2d8b6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7950, "upload_time": "2016-02-24T10:47:04", "url": "https://files.pythonhosted.org/packages/4f/21/7867d25ea7c8f5625bc3d2ffa3e372719f5f5c9fbc1333d5b59401044bd6/aiohttp_jrpc-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "66de705230ac8348d1719ad216574c95", "sha256": "0178e10f12cf378a2b922db5c803196c1adbed76119becaab37af70a84bde8b5" }, "downloads": -1, "filename": "aiohttp_jrpc-0.1.0.tar.gz", "has_sig": true, "md5_digest": "66de705230ac8348d1719ad216574c95", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5233, "upload_time": "2016-02-24T10:47:10", "url": "https://files.pythonhosted.org/packages/a9/90/52db2ee2947b1df01ad37c55aa3aa6fd12cfc4f5338e04fe12581d7e78b1/aiohttp_jrpc-0.1.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "d0662bb5fa64bb95aa3a86f843e2d8b6", "sha256": "6aa94ff20aa8c80e1987baa6551af018bdf9f135c06c7bdf09858561b9a7f515" }, "downloads": -1, "filename": "aiohttp_jrpc-0.1.0-py3-none-any.whl", "has_sig": true, "md5_digest": "d0662bb5fa64bb95aa3a86f843e2d8b6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7950, "upload_time": "2016-02-24T10:47:04", "url": "https://files.pythonhosted.org/packages/4f/21/7867d25ea7c8f5625bc3d2ffa3e372719f5f5c9fbc1333d5b59401044bd6/aiohttp_jrpc-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "66de705230ac8348d1719ad216574c95", "sha256": "0178e10f12cf378a2b922db5c803196c1adbed76119becaab37af70a84bde8b5" }, "downloads": -1, "filename": "aiohttp_jrpc-0.1.0.tar.gz", "has_sig": true, "md5_digest": "66de705230ac8348d1719ad216574c95", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5233, "upload_time": "2016-02-24T10:47:10", "url": "https://files.pythonhosted.org/packages/a9/90/52db2ee2947b1df01ad37c55aa3aa6fd12cfc4f5338e04fe12581d7e78b1/aiohttp_jrpc-0.1.0.tar.gz" } ] }