{ "info": { "author": "chris48s", "author_email": "", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Programming Language :: Python", "Programming Language :: Python :: 3" ], "description": "# requests-paginator\n\n![PyPI Version](https://img.shields.io/pypi/v/requests-paginator.svg)\n![License](https://img.shields.io/pypi/l/requests-paginator.svg)\n\nA generator for iterating over paginated API responses\n\n## Installation\n\n```\npip install requests-paginator\n```\n\n## Usage\n\nInstantiate `RequestsPaginator` with:\n\n* A URL to page 1 of the API output\n* A function (or lambda) `get_nextpage(page)` which describes how to get the next page:\n * Return `None` to stop iteration.\n * `page` is an instance of [`requests.models.Response`](http://docs.python-requests.org/en/master/user/quickstart/#response-content)\n\nExamples:\n\n```py\nfrom requests_paginator import RequestsPaginator\n\nBASE = 'https://galaxy.ansible.com'\n\ndef get_next_page(page):\n body = page.json()\n if body['next_link']:\n return BASE + body['next_link']\n return None\n\n# instantiate the paginator\npages = RequestsPaginator(\n BASE + '/api/v1/categories/?page=1',\n get_next_page\n)\n\n# iterate over the pages\nfor page in pages:\n print(\"calling %s\" % (page.url))\n page.raise_for_status()\n print(\"found %s results\" % (len(page.json()['results'])))\n```\n\n```py\nfrom requests_paginator import RequestsPaginator\n\ndef get_next_page(page):\n links = {}\n if \"Link\" in page.headers:\n linkHeaders = page.headers[\"Link\"].split(\", \")\n for linkHeader in linkHeaders:\n (url, rel) = linkHeader.split(\"; \")\n url = url[1:-1]\n rel = rel[5:-1]\n if rel == 'next':\n return url\n return None\n\n# instantiate the paginator\npages = RequestsPaginator(\n 'https://api.github.com/users/github/repos?page=1',\n get_next_page\n)\n\n# iterate over the pages\nfor page in pages:\n print(\"calling %s\" % (page.url))\n page.raise_for_status()\n print(\"found %s results\" % (len(page.json())))\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/chris48s/requests-paginator", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "requests-paginator", "package_url": "https://pypi.org/project/requests-paginator/", "platform": "", "project_url": "https://pypi.org/project/requests-paginator/", "project_urls": { "Homepage": "https://github.com/chris48s/requests-paginator" }, "release_url": "https://pypi.org/project/requests-paginator/0.2.0/", "requires_dist": null, "requires_python": "", "summary": "A generator for iterating over paginated API responses", "version": "0.2.0" }, "last_serial": 4666082, "releases": { "0.2.0": [ { "comment_text": "", "digests": { "md5": "73609b7b19d591cd18b14e89abe8923f", "sha256": "3ca5709e8c6249f805a00850d0ae10e3d163c51ec5af1fc0f75ba32a0a9cc490" }, "downloads": -1, "filename": "requests-paginator-0.2.0.tar.gz", "has_sig": false, "md5_digest": "73609b7b19d591cd18b14e89abe8923f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2102, "upload_time": "2019-01-06T17:07:21", "url": "https://files.pythonhosted.org/packages/cf/32/a08732040bf2184ba6d44ef48a0b016544dae7c0117784245800347a4fea/requests-paginator-0.2.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "73609b7b19d591cd18b14e89abe8923f", "sha256": "3ca5709e8c6249f805a00850d0ae10e3d163c51ec5af1fc0f75ba32a0a9cc490" }, "downloads": -1, "filename": "requests-paginator-0.2.0.tar.gz", "has_sig": false, "md5_digest": "73609b7b19d591cd18b14e89abe8923f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2102, "upload_time": "2019-01-06T17:07:21", "url": "https://files.pythonhosted.org/packages/cf/32/a08732040bf2184ba6d44ef48a0b016544dae7c0117784245800347a4fea/requests-paginator-0.2.0.tar.gz" } ] }