{ "info": { "author": "Arijit Basu", "author_email": "sayanarijit@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "Intended Audience :: Information Technology", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Operating System :: MacOS", "Operating System :: Microsoft", "Operating System :: POSIX", "Operating System :: Unix", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Internet", "Topic :: Software Development", "Topic :: Utilities" ], "description": "# RESTEasy\n\nREST API calls made easier\n\n[![PyPI version](https://img.shields.io/pypi/v/resteasy.svg)](https://pypi.org/project/RESTEasy)\n[![Build Status](https://travis-ci.org/rapidstack/RESTEasy.svg?branch=master)](https://travis-ci.org/rapidstack/RESTEasy)\n[![Join the chat at https://gitter.im/rapidstack/RESTEasy](https://badges.gitter.im/rapidstack/RESTEasy.svg)](https://gitter.im/rapidstack/RESTEasy?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)\n\n- [RESTEasy](#resteasy)\n - [Installation](#installation)\n - [Usage and examples](#usage-and-examples)\n - [Import](#import)\n - [Example 1: GitHub Jobs](#example-1-github-jobs)\n - [Example 2: All methods: GET, POST, PUT, PATCH, DELETE](#example-2-all-methods-get-post-put-patch-delete)\n - [Example 3: Chuck Norris jokes](#example-3-chuck-norris-jokes)\n - [Example 4: Using custom decoder: Parsing MyAnimeList HTML content](#example-4-using-custom-decoder-parsing-myanimelist-html-content)\n - [Debugging](#debugging)\n - [Exceptions](#exceptions)\n\n## Installation\n\n```bash\npip install resteasy\n```\n\n## Usage and examples\n\n### Import\n\n```python\nfrom resteasy import RESTEasy, json\n\napi = RESTEasy(base_url='https://api.example.com',\n auth=('user', '****'),\n verify=False, cert=None, timeout=None,\n encoder=json.dumps, decoder=json.loads, debug=False)\n\n# optional timeout\napi.timeout = 60\n```\n\n### Example 1: GitHub Jobs\n\n```python\napi = RESTEasy(base_url='https://jobs.github.com')\n\npositions = api.route('positions.json')\n\npositions.get(description='python', full_time=1)\n# or\npositions.do('GET', {'description': 'python', 'full_time': 1})\n\n# GET https://jobs.github.com/positions.json?description=python&full_time=1\n```\n\n### Example 2: All methods: GET, POST, PUT, PATCH, DELETE\n\n```python\nfrom resteasy import RESTEasy\n\napi = RESTEasy(base_url='https://jsonplaceholder.typicode.com')\n\nposts = api.route('posts')\n\n### GET (fetch resources)\nposts.get()\nposts.get(userId=1)\nposts.route(1).get()\n\n### POST (create a resource)\nposts.post(title='foo', body='bar', userId=1)\n\n### PUT & PATCH (update a resource)\nposts.route(1).put(id=1, title='foo', body='bar', userId=1)\nposts.route(1).patch(title='foo')\n\n### DELETE (delete a resource)\nposts.route(1).delete()\n```\n\n### Example 3: Chuck Norris jokes\n\n```python\nfrom __future__ import print_function\nfrom resteasy import RESTEasy\n\napi = RESTEasy(base_url='https://api.chucknorris.io')\n\n\n### Print a random joke\njokes = api.route('jokes')\nrandom = jokes.route('random')\nprint(random.get())\n\n# GET https://api.chucknorris.io/jokes/random\n\n\n### Get all categories\ncategories = jokes.route('categories').get()\nprint(categories)\n\n# GET https://api.chucknorris.io/jokes/categories\n\n\n### Print a random joke from each category\nfor category in categories:\n random_joke = random.get(category=category)\n print(category, ':', random_joke['value'])\n\n # GET https://api.chucknorris.io/jokes/random?category=\n```\n\n### Example 4: Using custom decoder: Parsing MyAnimeList HTML content\n\n```python\nfrom resteasy import RESTEasy\nfrom html.parser import HTMLParser\n\nclass MyHTMLParser(HTMLParser):\n '''Custom HTML parser'''\n\n def handle_starttag(self, tag, attrs):\n '''Overriding abstract method'''\n if tag == 'title' and not self.found:\n self.found = True\n\n def handle_data(self, data):\n '''Overriding abstract method'''\n if self.found and self.anime is None:\n self.anime = data\n\n def parse(self, content):\n '''Parse content and return object'''\n self.found = False\n self.anime = None\n self.feed(content)\n title = self.anime.strip().replace(' - MyAnimeList.net', '') if self.found else None\n return dict(title=title)\n\nparser = MyHTMLParser()\n\napi = RESTEasy(base_url='https://myanimelist.net', decoder=parser.parse)\n\n### One way\napi.route('anime/1').get()\n\n### Another way\napi.route('anime', 1).get()\n\n### Yet another way\napi.route('anime').route(1).get()\n\n### This is the last way I swear\napi.route('anime').route(1).do('GET')\n\n### Just kidding...\napi.route('anime').route(1).request('GET').json()\n\n# GET https://myanimelist.net/anime/1\n```\n\n## Debugging\n\nTo enable debugging just pass or set ***debug=True***\n\n```python\napi.debug = True\n```\n\nOnce debugging is set to 'True', Every HTTP call will return debug information instead of doing the actual request\n\n```python\n>>> posts.debug = True\n>>> posts.get(userId=1)\n{'endpoint': 'https://jsonplaceholder.typicode.com/posts',\n 'params': {'userId': 1},\n 'method': 'GET',\n 'timeout': None}\n```\n\n## Exceptions\n\n* As this package uses requests module to perform HTTP calls, so all exceptions will be raised by requests module itself.\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "https://github.com/rapidstack/RESTEasy/archive/v2.0.2.tar.gz", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/rapidstack/RESTEasy", "keywords": "REST API client", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "RESTEasy", "package_url": "https://pypi.org/project/RESTEasy/", "platform": "", "project_url": "https://pypi.org/project/RESTEasy/", "project_urls": { "Download": "https://github.com/rapidstack/RESTEasy/archive/v2.0.2.tar.gz", "Homepage": "https://github.com/rapidstack/RESTEasy" }, "release_url": "https://pypi.org/project/RESTEasy/2.0.2/", "requires_dist": [ "requests (==2.21.0)" ], "requires_python": "", "summary": "REST API calls made easier", "version": "2.0.2" }, "last_serial": 4998387, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "c110ec10f7c20a4a53fa1eca31402f94", "sha256": "079d189c5de952a0ee46225f3440701e024c175fdfdccb4931f1be313a27d723" }, "downloads": -1, "filename": "RESTEasy-0.0.1.tar.gz", "has_sig": false, "md5_digest": "c110ec10f7c20a4a53fa1eca31402f94", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4484, "upload_time": "2018-03-10T07:41:41", "url": "https://files.pythonhosted.org/packages/8e/eb/f06340cd9b632b9474e6d852f1c3b90a7dffd9fefda882d7865ca5ce9db1/RESTEasy-0.0.1.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "8e365cdbe5925a791ba65b199e3c8dc4", "sha256": "bc09ea412e83367fec6b96c3137970586fa206d07a6fde322f9fe3397dce0612" }, "downloads": -1, "filename": "RESTEasy-1.0.0.tar.gz", "has_sig": false, "md5_digest": "8e365cdbe5925a791ba65b199e3c8dc4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4775, "upload_time": "2018-03-10T11:08:00", "url": "https://files.pythonhosted.org/packages/7d/c6/91f09b7d331e9cefe81e589019f07334d395ce4eb710cea3eed9a4e8e1bb/RESTEasy-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "fcd77ad0b232ebda94e708b9f1a5b93c", "sha256": "d2d5cbe6f0fb5fab0233f975794a8f45307aa12ca5268a483172b680b18fb16b" }, "downloads": -1, "filename": "RESTEasy-1.0.1.tar.gz", "has_sig": false, "md5_digest": "fcd77ad0b232ebda94e708b9f1a5b93c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4924, "upload_time": "2018-03-10T11:44:12", "url": "https://files.pythonhosted.org/packages/eb/1d/46f524c958f331df03eba1351eadf66000308572045a3e04e0f34778e6be/RESTEasy-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "e9facc5a009e2781013f705eab4ba67d", "sha256": "dc5159a2119ae770c25641a26d2e0aa3e1e3a0e8bf3897d53fc5236abbc790ee" }, "downloads": -1, "filename": "RESTEasy-1.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "e9facc5a009e2781013f705eab4ba67d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5155, "upload_time": "2018-10-18T11:03:59", "url": "https://files.pythonhosted.org/packages/89/74/38595907be1efa78bbb45c6342b9c13feecb0007b8e8e668109397219ec6/RESTEasy-1.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "664869368df9bf54f76abfbd6d741404", "sha256": "e46d4dacc07690e097e95e0a12014cd1d5e13a273797a665b212996e27ae400b" }, "downloads": -1, "filename": "RESTEasy-1.0.2.tar.gz", "has_sig": false, "md5_digest": "664869368df9bf54f76abfbd6d741404", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5581, "upload_time": "2018-10-18T11:04:01", "url": "https://files.pythonhosted.org/packages/f5/bf/d2dac0064f1630f0bc5a365acf5d782ccc7d351248f5de30f567aa1d3c39/RESTEasy-1.0.2.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "3e4e2cf2cc2171336ee8baad7b49be2f", "sha256": "6c74e007c054b39c1a5245cac35e3ebd39e319730914d5d570c74cfcfc91b95f" }, "downloads": -1, "filename": "RESTEasy-1.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "3e4e2cf2cc2171336ee8baad7b49be2f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5158, "upload_time": "2018-10-18T11:24:06", "url": "https://files.pythonhosted.org/packages/3d/0e/046ef8b46670e835c45a0dcb1a09aead439a00c163832b7820a2718d63a7/RESTEasy-1.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1180895e3d9d91bf481fb153d37ca123", "sha256": "f0eef541396d011441de87b4881d8e3e0babfd1edbd96978212781030fc8d498" }, "downloads": -1, "filename": "RESTEasy-1.0.3.tar.gz", "has_sig": false, "md5_digest": "1180895e3d9d91bf481fb153d37ca123", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5628, "upload_time": "2018-10-18T11:24:07", "url": "https://files.pythonhosted.org/packages/e3/4c/b219e58b59eb8deb4d20607a374959bf52abfe9b66e06f81bc5707262750/RESTEasy-1.0.3.tar.gz" } ], "1.0.4": [ { "comment_text": "", "digests": { "md5": "1e3031eb84622a3861cc369101d1d2c6", "sha256": "b1ec0b2fa6bd04b11f93a2bffb2d785132b290235b267e5f0f118bbf2209361b" }, "downloads": -1, "filename": "RESTEasy-1.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "1e3031eb84622a3861cc369101d1d2c6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5158, "upload_time": "2018-11-01T06:19:50", "url": "https://files.pythonhosted.org/packages/77/5f/ffe3a8afbcf8d1ed382ce622bb1deb14bd138de654d21b486deb1d35ddfa/RESTEasy-1.0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "133af6e520c7f742395cff29cd0099df", "sha256": "a4578df346cc03a4543bb11eb9cd9f51bddfba8a8a90bd3bfe022c23ee224a3a" }, "downloads": -1, "filename": "RESTEasy-1.0.4.tar.gz", "has_sig": false, "md5_digest": "133af6e520c7f742395cff29cd0099df", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5585, "upload_time": "2018-11-01T06:19:53", "url": "https://files.pythonhosted.org/packages/dd/90/aa0f8a254e6eaa2f987bc2cc95b1bebe25d3de1304ad5dab44e4d6ddccf3/RESTEasy-1.0.4.tar.gz" } ], "1.0.5": [ { "comment_text": "", "digests": { "md5": "a08ed704ecfc994d99b87896d95a99d9", "sha256": "0207c39305441541378cd576f55535995b144009d937cf5726098637a3c01475" }, "downloads": -1, "filename": "RESTEasy-1.0.5-py3-none-any.whl", "has_sig": false, "md5_digest": "a08ed704ecfc994d99b87896d95a99d9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5145, "upload_time": "2018-12-11T07:32:54", "url": "https://files.pythonhosted.org/packages/c7/e3/61cc81a1946130fc786439c12cc1e9df486ff6412a4c601708384e098bd8/RESTEasy-1.0.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "59a23573c0cc0358012bfc1ae93cbb41", "sha256": "fa08c03afa21b8f36fe62a855a711fe16d9a2655d88a14a9b15e67a497604e8e" }, "downloads": -1, "filename": "RESTEasy-1.0.5.tar.gz", "has_sig": false, "md5_digest": "59a23573c0cc0358012bfc1ae93cbb41", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5582, "upload_time": "2018-12-11T07:32:58", "url": "https://files.pythonhosted.org/packages/be/40/6895f7f1937f7e045c4e731a09f07ee56c8af0b9f25bc50e0f84cb2a861d/RESTEasy-1.0.5.tar.gz" } ], "2.0.0": [ { "comment_text": "", "digests": { "md5": "998d809326fd1728e62081630c77d7ef", "sha256": "f3618dd871c3e069b7d27c56bbd5c45fbab6bef4f7814ece90ddc2a260633fab" }, "downloads": -1, "filename": "RESTEasy-2.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "998d809326fd1728e62081630c77d7ef", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5218, "upload_time": "2019-03-28T06:04:45", "url": "https://files.pythonhosted.org/packages/3b/a2/254f44a100942004ae8f28e9a710256d9b83504914c618c49b817edf0397/RESTEasy-2.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b588c0d3f564648792dd2969ec613f17", "sha256": "9d62fab417e45c64107bcbbee19d6a297854e6a0912d0051337551e8a79cdb47" }, "downloads": -1, "filename": "RESTEasy-2.0.0.tar.gz", "has_sig": false, "md5_digest": "b588c0d3f564648792dd2969ec613f17", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5697, "upload_time": "2019-03-28T06:04:47", "url": "https://files.pythonhosted.org/packages/0e/a6/beda88d369fd63d9436c224e693de8cbeb58b159c37f63b0fab8c3c80e60/RESTEasy-2.0.0.tar.gz" } ], "2.0.1": [ { "comment_text": "", "digests": { "md5": "25ab8d9fc6786656916e59a23183c3e7", "sha256": "9f7dbd735b996e0af47a5937045cec6f856ec4d0772054c3b817a707a7113a2e" }, "downloads": -1, "filename": "RESTEasy-2.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "25ab8d9fc6786656916e59a23183c3e7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5206, "upload_time": "2019-03-28T06:30:33", "url": "https://files.pythonhosted.org/packages/15/d3/429beaef93231b0bfb266463d658d9dd094b303396225055164263b0cdfc/RESTEasy-2.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6a57efa2f82a78479015842f2af3d45c", "sha256": "8011d3ef12637afddaf33003585d25c33161c847e98586213346d335029c0b24" }, "downloads": -1, "filename": "RESTEasy-2.0.1.tar.gz", "has_sig": false, "md5_digest": "6a57efa2f82a78479015842f2af3d45c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5685, "upload_time": "2019-03-28T06:30:36", "url": "https://files.pythonhosted.org/packages/30/a1/b4d627d5f8c58f46f4c156295d7687ac1599440efd7a9c6ce518fe42e2b4/RESTEasy-2.0.1.tar.gz" } ], "2.0.2": [ { "comment_text": "", "digests": { "md5": "b42102854046a119ef41e07a9c68306e", "sha256": "79368254ab3e07c961b746510fdcffdbf57a82cbbbe5fdb9d8ab82ab0e8cae25" }, "downloads": -1, "filename": "RESTEasy-2.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "b42102854046a119ef41e07a9c68306e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5196, "upload_time": "2019-03-28T15:50:08", "url": "https://files.pythonhosted.org/packages/b9/1e/52a8a6b3294e0125abe3d58ceedf7fe7c13ad7c82604805dbdde46a2bc4b/RESTEasy-2.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e2836354bee0c50db7ac91b64ad23c84", "sha256": "42cf292bd0722690db5c0251c078092a135387121fcc33c947836889294ca137" }, "downloads": -1, "filename": "RESTEasy-2.0.2.tar.gz", "has_sig": false, "md5_digest": "e2836354bee0c50db7ac91b64ad23c84", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6956, "upload_time": "2019-03-28T15:50:11", "url": "https://files.pythonhosted.org/packages/bf/cc/c5399b6cfab2e27da245a089ea3ff9dc102765ee4fdf05270dd3ed050def/RESTEasy-2.0.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "b42102854046a119ef41e07a9c68306e", "sha256": "79368254ab3e07c961b746510fdcffdbf57a82cbbbe5fdb9d8ab82ab0e8cae25" }, "downloads": -1, "filename": "RESTEasy-2.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "b42102854046a119ef41e07a9c68306e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5196, "upload_time": "2019-03-28T15:50:08", "url": "https://files.pythonhosted.org/packages/b9/1e/52a8a6b3294e0125abe3d58ceedf7fe7c13ad7c82604805dbdde46a2bc4b/RESTEasy-2.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e2836354bee0c50db7ac91b64ad23c84", "sha256": "42cf292bd0722690db5c0251c078092a135387121fcc33c947836889294ca137" }, "downloads": -1, "filename": "RESTEasy-2.0.2.tar.gz", "has_sig": false, "md5_digest": "e2836354bee0c50db7ac91b64ad23c84", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6956, "upload_time": "2019-03-28T15:50:11", "url": "https://files.pythonhosted.org/packages/bf/cc/c5399b6cfab2e27da245a089ea3ff9dc102765ee4fdf05270dd3ed050def/RESTEasy-2.0.2.tar.gz" } ] }