{ "info": { "author": "Ryan Anguiano", "author_email": "ryan.anguiano@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 2 - Pre-Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6" ], "description": "================\nAPI Star Contrib\n================\n\n\n.. image:: https://img.shields.io/pypi/v/apistar-contrib.svg\n :target: https://pypi.python.org/pypi/apistar-contrib\n\n.. image:: https://img.shields.io/travis/ryananguiano/apistar-contrib.svg\n :target: https://travis-ci.org/ryananguiano/apistar-contrib\n\n.. image:: https://readthedocs.org/projects/api-star-contrib/badge/?version=latest\n :target: https://api-star-contrib.readthedocs.io/en/latest/?badge=latest\n :alt: Documentation Status\n\n.. image:: https://pyup.io/repos/github/ryananguiano/apistar-contrib/shield.svg\n :target: https://pyup.io/repos/github/ryananguiano/apistar-contrib/\n :alt: Updates\n\n\nContrib packages to add on to API Star.\n\n\n* Free software: MIT license\n* Documentation: https://api-star-contrib.readthedocs.io.\n\n\nFeatures\n--------\n\n* CSRF Token Hook\n* Local Session Store (For Development)\n* Timezone Support\n* Redis Session Store\n\n\nTODO\n----\n\n* DB Session Store\n\n\nUsage\n-----\n\nLocal Session Store (For Development)\n`````````````````````````````````````\n\n.. code-block:: python\n\n from apistar import App, Route, http\n from apistar_contrib.sessions import Session, SessionComponent, SessionHook, LocalMemorySessionStore\n\n\n def use_session(session: Session, params: http.QueryParams):\n for key, value in params:\n session[key] = value\n return session.data\n\n\n def clear_session(session: Session):\n session.clear()\n return session.data\n\n\n routes = [\n Route('/', 'GET', use_session),\n Route('/clear', 'GET', clear_session),\n ]\n\n app = App(\n routes=routes,\n components=[SessionComponent(LocalMemorySessionStore)],\n event_hooks=[SessionHook]\n )\n\n\nRedis Session Store\n```````````````````\n\n.. code-block:: python\n\n from apistar import App, Route, http\n from apistar_contrib.sessions import Session, SessionComponent, SessionHook, RedisSessionStore\n\n\n def use_session(session: Session, params: http.QueryParams):\n for key, value in params:\n session[key] = value\n return session.data\n\n\n def clear_session(session: Session):\n session.clear()\n return session.data\n\n\n routes = [\n Route('/', 'GET', use_session),\n Route('/clear', 'GET', clear_session),\n ]\n\n app = App(\n routes=routes,\n components=[SessionComponent(RedisSessionStore, 'redis://localhost:6379/0')],\n event_hooks=[SessionHook]\n )\n\n\nCSRF Token\n``````````\n\n.. code-block:: python\n\n import os\n from apistar import App, Route, http\n from apistar_contrib.csrf import EnforceCsrfHook, rotate_token\n\n\n def show_form():\n return app.render_template(\n 'form.html',\n show_csrf=True,\n )\n\n\n def show_no_csrf_form():\n return app.render_template(\n 'form.html',\n show_csrf=False,\n )\n\n\n def handle_form(request: http.Request):\n # You should rotate CSRF tokens after successful login/logout\n rotate_token(request)\n return app.render_template(\n 'form.html',\n show_csrf=True,\n success=True,\n )\n\n\n routes = [\n Route('/', 'GET', show_form),\n Route('/no_csrf', 'GET', show_no_csrf_form),\n Route('/handle', 'POST', handle_form),\n ]\n\n BASE_DIR = os.path.dirname(__file__)\n TEMPLATE_DIR = os.path.join(BASE_DIR, 'templates')\n\n app = App(\n routes=routes,\n event_hooks=[EnforceCsrfHook],\n template_dir=TEMPLATE_DIR,\n )\n\n\n.. code-block:: html\n\n \n \n \n \n \n CSRF Form\n \n \n \n {% if success %}

Successful POST

{% endif %}\n
\n {% if show_csrf %} {{ csrf_token() }} {% endif %}\n \n
\n \n \n\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\n=======\nHistory\n=======\n\n0.0.6 (2018-06-08)\n------------------\n\n* Added Redis Session Store to README and tests\n\n0.0.5 (2018-05-19)\n------------------\n\n* Added Redis Session Store\n* Created first tests\n\n0.0.4 (2018-05-18)\n------------------\n\n* Remove default components\n\n0.0.3 (2018-05-18)\n------------------\n\n* Refactor Session component\n\n0.0.2 (2018-05-17)\n------------------\n\n* Add CSRF token hook\n\n\n0.0.1 (2018-05-15)\n------------------\n\n* First release on PyPI.\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/ryananguiano/apistar-contrib", "keywords": "apistar contrib", "license": "MIT license", "maintainer": "", "maintainer_email": "", "name": "apistar-contrib", "package_url": "https://pypi.org/project/apistar-contrib/", "platform": "", "project_url": "https://pypi.org/project/apistar-contrib/", "project_urls": { "Homepage": "https://github.com/ryananguiano/apistar-contrib" }, "release_url": "https://pypi.org/project/apistar-contrib/0.0.6/", "requires_dist": [ "apistar (>=0.5)" ], "requires_python": ">=3.5", "summary": "Contrib packages to add on to API Star.", "version": "0.0.6" }, "last_serial": 3944099, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "88fde9da1d02fcf5938c84e2c08139a0", "sha256": "9e7107c16d02dd4db04aee4bf419a5201c85b9b685a06559e157a15218c28dbe" }, "downloads": -1, "filename": "apistar_contrib-0.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "88fde9da1d02fcf5938c84e2c08139a0", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 3598, "upload_time": "2018-05-15T22:39:47", "url": "https://files.pythonhosted.org/packages/bf/63/32671f5d45a442f9511f00f79d7fdac38e27250d56d4daf8862c57844701/apistar_contrib-0.0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "74a46dc2d484768e3bdab1c9ecccb6bc", "sha256": "872ec6f31617b7d2048319b1a1b8fd42fb57d120e8c13988919979a30ed60dcc" }, "downloads": -1, "filename": "apistar-contrib-0.0.1.tar.gz", "has_sig": false, "md5_digest": "74a46dc2d484768e3bdab1c9ecccb6bc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9450, "upload_time": "2018-05-15T22:39:48", "url": "https://files.pythonhosted.org/packages/96/f0/d3ed9cc9d28a35cea38dbbbb65aaf3c4e5395d79e200e6de38d87153adfa/apistar-contrib-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "d99f46237610be71993a3d952cb593cd", "sha256": "657787bd1d36547493e52efcafaec6ff185b7f3c8046e9bf6b91dec181de35ac" }, "downloads": -1, "filename": "apistar_contrib-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "d99f46237610be71993a3d952cb593cd", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 4491, "upload_time": "2018-05-18T02:46:37", "url": "https://files.pythonhosted.org/packages/54/02/5fc0c33cbfa9ce590eb88e281d3cec71e9b2662430aefa727f6f48dd999c/apistar_contrib-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d1e20c39ffac75a12895c659abafed64", "sha256": "6fbfb37d06d0873f360ecb275687a74f29d9f404f6db2deca27b78fd4674cbd4" }, "downloads": -1, "filename": "apistar-contrib-0.0.2.tar.gz", "has_sig": false, "md5_digest": "d1e20c39ffac75a12895c659abafed64", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 10969, "upload_time": "2018-05-18T02:46:38", "url": "https://files.pythonhosted.org/packages/a7/0c/ed8cfbd9ea13abdd846244b7bf9bf59c1e06a1d510ed764e55d314542c02/apistar-contrib-0.0.2.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "a6c45468959104ee2cce09c1e29cebe0", "sha256": "edb58414ab73d8b4aa659ac39031ca297bfe4869c861928bd4a6ec4f1ee55a27" }, "downloads": -1, "filename": "apistar_contrib-0.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "a6c45468959104ee2cce09c1e29cebe0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 4608, "upload_time": "2018-05-19T02:44:26", "url": "https://files.pythonhosted.org/packages/b9/b0/0972e846a09b403530a8cc147e21efe4fef872c17f16d49f20a8a6103506/apistar_contrib-0.0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "94d0e5b83d25b9b1cf29590f723a3195", "sha256": "517022372a500f8284c2b1c2738506e348eeee2d768d4b2777924db29f2c66e1" }, "downloads": -1, "filename": "apistar-contrib-0.0.4.tar.gz", "has_sig": false, "md5_digest": "94d0e5b83d25b9b1cf29590f723a3195", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 11243, "upload_time": "2018-05-19T02:44:28", "url": "https://files.pythonhosted.org/packages/1e/9c/db44f8d613693853fcd31683e73c6eaff02e47a466dd1cc882533f964c43/apistar-contrib-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "63e7a42f68feaee17a8092aa4498f3d7", "sha256": "773aabe431430b9332dd277b5f5784452d80e9e4fca6959fb5dac3984aad0eb3" }, "downloads": -1, "filename": "apistar_contrib-0.0.5-py3-none-any.whl", "has_sig": false, "md5_digest": "63e7a42f68feaee17a8092aa4498f3d7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 4709, "upload_time": "2018-05-19T07:02:24", "url": "https://files.pythonhosted.org/packages/78/d8/7fe9ff19d169e6fc9f3b5c0f55f3f1f3efadc5f2a1ae3642beb492c0ab9f/apistar_contrib-0.0.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c196e47aeb99fc71d243cd68b168b5c5", "sha256": "8a24f1d91d64663a89ae8f997d46a5a4b054c29af56e3db05bb82593793bfa49" }, "downloads": -1, "filename": "apistar-contrib-0.0.5.tar.gz", "has_sig": false, "md5_digest": "c196e47aeb99fc71d243cd68b168b5c5", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 12155, "upload_time": "2018-05-19T07:02:25", "url": "https://files.pythonhosted.org/packages/37/28/aa65d809f0b95b197078b29f9e4e0e51cc90818869e8a4dbb9c1636e9188/apistar-contrib-0.0.5.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "620043ae7e7abae021d8580079f512ab", "sha256": "f2cb8a551cbb2804367da686088f2d7945d0d5e82cba7e589e1a62fb30455541" }, "downloads": -1, "filename": "apistar_contrib-0.0.6-py3-none-any.whl", "has_sig": false, "md5_digest": "620043ae7e7abae021d8580079f512ab", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 4777, "upload_time": "2018-06-08T21:05:39", "url": "https://files.pythonhosted.org/packages/4c/8d/ab1375f2fdeb3930483f0615dc8c2fe1571080c6a5f90fa8dd2813e61a09/apistar_contrib-0.0.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "892552cf61793523e611e4e75a92fef6", "sha256": "757478c28b73d3be97225373db54306cb771bc3d6c36e2bc1348b2108cef3102" }, "downloads": -1, "filename": "apistar-contrib-0.0.6.tar.gz", "has_sig": false, "md5_digest": "892552cf61793523e611e4e75a92fef6", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 12593, "upload_time": "2018-06-08T21:05:40", "url": "https://files.pythonhosted.org/packages/20/13/70de512f825ea5fbdebe2bca81bcb38eacc5ab2822e4054207fbd19f6dd6/apistar-contrib-0.0.6.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "620043ae7e7abae021d8580079f512ab", "sha256": "f2cb8a551cbb2804367da686088f2d7945d0d5e82cba7e589e1a62fb30455541" }, "downloads": -1, "filename": "apistar_contrib-0.0.6-py3-none-any.whl", "has_sig": false, "md5_digest": "620043ae7e7abae021d8580079f512ab", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 4777, "upload_time": "2018-06-08T21:05:39", "url": "https://files.pythonhosted.org/packages/4c/8d/ab1375f2fdeb3930483f0615dc8c2fe1571080c6a5f90fa8dd2813e61a09/apistar_contrib-0.0.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "892552cf61793523e611e4e75a92fef6", "sha256": "757478c28b73d3be97225373db54306cb771bc3d6c36e2bc1348b2108cef3102" }, "downloads": -1, "filename": "apistar-contrib-0.0.6.tar.gz", "has_sig": false, "md5_digest": "892552cf61793523e611e4e75a92fef6", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 12593, "upload_time": "2018-06-08T21:05:40", "url": "https://files.pythonhosted.org/packages/20/13/70de512f825ea5fbdebe2bca81bcb38eacc5ab2822e4054207fbd19f6dd6/apistar-contrib-0.0.6.tar.gz" } ] }