{ "info": { "author": "Spyros Markopoulos", "author_email": "mail.doctor46@gmail.com", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "Natural Language :: English", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "nameko-http\n===========\n\nHttp utilities for Nameko built-in HTTP extension\n\nQuickstart\n----------\n\nInstall from pypi:\n\n```bash\n $ pip install nameko-http\n```\n\nExample:\n\n```python\n# helloworld.py\nimport json\n\nfrom werkzeug.wrappers import Response\n\nfrom nameko_http import api\nfrom nameko_http.exceptions import HttpError\n\n\nclass HttpForbidden(HttpError):\n # Any Http Exceptions that are going to be raised need to inherit\n # from base exception class: HttpError.\n error_code = 'FORBIDDEN'\n status_code = 403\n\n\nclass ExampleService:\n name = \"exampleservice\"\n\n @api('GET', '/privileged')\n def forbidden(self, request):\n raise HttpForbidden('You shall not access')\n\n @api('GET', '/foo', cors_enabled=True)\n def get_foo(self, request):\n return Response(\n json.dumps({'value': 'foo'}),\n status=200,\n mimetype='application/json'\n )\n```\n\n```bash\n$ nameko run helloworld\nstarting services: exampleservice\n```\n\n```bash\n$ curl -i localhost:8000/privileged\nHTTP/1.1 403 FORBIDDEN\nContent-Type: application/json\nContent-Lentgh: 61\nDate: Thu, 01 Nov 2018 14:21:14 GMT\n\n{\"error_code\": \"FORBIDDEN\", \"reason\": \"You shall not access\"}\n```\n\n```bash \ncurl -i localhost:8000/foo\nHTTP/1.1 200 OK\nContent-Type: application/json\nContent-Length: 16\nAccess-Control-Allow-Origin: *\nAccess-Control-Allow-Headers: Authorization, Content-Type, Accept\nAccess-Control-Allow-Methods: OPTIONS, GET, POST, PUT, PATCH, DELETE\nAccess-Control-Allow-Credentials: false\nDate: Thu, 01 Nov 2018 14:23:21 GMT\n\n{\"value\": \"foo\"}\n```\n\nCredits\n-------\n\nThis package was created with Cookiecutter_ and the `audreyr/cookiecutter-pypackage`_ project template.\n\n.. _Cookiecutter: https://github.com/audreyr/cookiecutter\n.. _`audreyr/cookiecutter-pypackage`: https://github.com/audreyr/cookiecutter-pypackage\n\n\nHistory\n=======\n\n0.1.5 (2018-11-29)\n------------------\n\n* Fix for empty request body when request method POST, PUT or PATCH.\n\n0.1.4 (2018-11-20)\n------------------\n\n* Fix for https://discourse.nameko.io/t/webserver-can-be-subclassed-but-is-not-work-for-me/266\n\n0.1.3 (2018-11-05)\n------------------\n\n* fix bumping issue\n\n0.1.2 (2018-11-05)\n------------------\n\n* Pass cors headers when exceptions\n* Added handling for expected exceptions\n\n0.1.1 (2018-11-01)\n------------------\n\n* Added utility method for making responses\n* README.md update with example usage\n* Drop support for python:2.7\n\n0.1.0 (2018-10-31)\n------------------\n\n* First release.\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/tyler46/nameko_http", "keywords": "nameko_http", "license": "", "maintainer": "", "maintainer_email": "", "name": "nameko-http", "package_url": "https://pypi.org/project/nameko-http/", "platform": "", "project_url": "https://pypi.org/project/nameko-http/", "project_urls": { "Homepage": "https://github.com/tyler46/nameko_http" }, "release_url": "https://pypi.org/project/nameko-http/0.1.7/", "requires_dist": [ "nameko (>=2.12.0)", "python-mimeparse (>=1.6.0)", "pip (==18.1); extra == 'dev'", "bumpversion (==0.5.3); extra == 'dev'", "wheel (==0.32.2); extra == 'dev'", "watchdog (==0.9.0); extra == 'dev'", "flake8 (==3.5.0); extra == 'dev'", "pylint (>=1.9.3); extra == 'dev'", "tox (==3.5.2); extra == 'dev'", "coverage (==4.5.1); extra == 'dev'", "twine (==1.12.1); extra == 'dev'" ], "requires_python": "", "summary": "Http utilities for Nameko built-in HTTP extension", "version": "0.1.7" }, "last_serial": 5512277, "releases": { "0.1.6": [ { "comment_text": "", "digests": { "md5": "50e1160908d3509e13152fa655957486", "sha256": "d597a27bf782510c3164af7b8298ef33066eb907efc48edf7c9ad42a1cfc533d" }, "downloads": -1, "filename": "nameko_http-0.1.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "50e1160908d3509e13152fa655957486", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 6759, "upload_time": "2019-02-17T15:36:20", "url": "https://files.pythonhosted.org/packages/61/b9/3b55ad0ae008c3d28d0153fa37fde847d02c60371e4a76724fa9e44c4e0a/nameko_http-0.1.6-py2.py3-none-any.whl" } ], "0.1.7": [ { "comment_text": "", "digests": { "md5": "9dab65b54637f6dab0f80bf76a391c65", "sha256": "c5c3a7983a4e09a48899b258d625e4c8fdf64e6f94bd3354e1db4a75750702f9" }, "downloads": -1, "filename": "nameko_http-0.1.7-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9dab65b54637f6dab0f80bf76a391c65", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 6778, "upload_time": "2019-07-10T13:58:56", "url": "https://files.pythonhosted.org/packages/77/b5/6331853ae54800c45c37cf22365e1607a4f12371eb743c275abe896ed9cb/nameko_http-0.1.7-py2.py3-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "9dab65b54637f6dab0f80bf76a391c65", "sha256": "c5c3a7983a4e09a48899b258d625e4c8fdf64e6f94bd3354e1db4a75750702f9" }, "downloads": -1, "filename": "nameko_http-0.1.7-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9dab65b54637f6dab0f80bf76a391c65", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 6778, "upload_time": "2019-07-10T13:58:56", "url": "https://files.pythonhosted.org/packages/77/b5/6331853ae54800c45c37cf22365e1607a4f12371eb743c275abe896ed9cb/nameko_http-0.1.7-py2.py3-none-any.whl" } ] }