{ "info": { "author": "Danila Ganchar", "author_email": "danila.ganchar@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Framework :: Flask", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6" ], "description": "Flask request validator\n-----------------------\n\n|Build Status| |Coverage Status|\n\nPackage provide possibility to validate of Flask request.\n\nKey features\n------------\n\n- Easy and beautiful\n- Type conversion\n- Extensible\n- Supports\n `Flask-RESTful `__\n- Supports Python 2.7 / 3.5 / 3.6\n\nHow to install:\n~~~~~~~~~~~~~~~\n\n::\n\n $ pip install flask_request_validator\n\nHow to use:\n~~~~~~~~~~~\n\n**There are 4 types of request parameters**:\n\n``GET`` - parameter stored in flask.request.args\n\n``FORM`` - parameter stored in flask.request.form\n\n``JSON`` - parameter stored in flask.request.get_json()\n\n``PATH`` - parameter stored in flask.request.view_args. In this case is\npart of route\n\n**Here a list of possible rules for validation**:\n\n``Pattern(r'^[a-z-_.]{8,10}$')`` - value checks at regexp. Works only\nfor ``str`` values.\n\n``MaxLength(6)`` - value checks at max length. Works for ``str`` and\n``list`` values.\n\n``MixLength(6)`` - value checks at min length. Works for ``str`` and\n``list`` values.\n\n``Enum('value1', 'value2')`` - describes allowed values\n\n``AbstractRule`` - provide possibility to write custom rule\n\n**Supported types for values**:\n\n``str, bool, int, float, dict, list``\n\n``bool`` should be sent from client as: ``1``, ``0``, or ``true`` /\n``false`` in any register\n\n``list`` should be sent from client as ``value1,value2,value3``.\n\n``dict`` should be sent from client as ``key1:val1,key2:val2``.\n\nHere an example of route with validator:\n\n::\n\n from flask_request_validator import (\n PATH,\n FORM,\n Param,\n Pattern,\n validate_params\n )\n\n\n @app.route('/', methods=['POST'])\n @validate_params(\n Param('uuid', PATH, str, rules=[Pattern(r'^[a-z-_.]{8,10}$')]),\n Param('price', FORM, float),\n )\n def route(uuid, price):\n print uuid # str\n print price # float\n\nParam description:\n\n::\n\n Param(\n param_name_in_request, # str\n request_param_type, # where stored param(GET, FORM, JSON, PATH)\n type_of_value, # str, bool, int, float, dict, list - which type we want to have\n required_or_no, bool - True by default\n default_value, None by default. You can use lambda for this arg - default=lambda: ['test']\n list_of_rules\n )\n\nOne more example(request ``/orders?finished=True&amount=100``):\n\n::\n\n @app.route('/orders', methods=['GET'])\n @validate_params(\n Param('finished', GET, bool, required=False),\n Param('amount', GET, int, required=False),\n )\n def route(finished, amount):\n print finished # True (bool)\n print amount # 100 (int)\n\nAlso you can create your custom rule. Here is a small example:\n\n::\n\n from flask_request_validator import AbstractRule\n\n\n def reserved_values():\n return ['today', 'tomorrow']\n\n\n class MyRule(AbstractRule):\n\n def validate(self, value):\n errors = []\n if value in reserved_values():\n errors.append('Value %s is reserved' % value)\n\n # other errors...\n errors.append('One more error')\n\n return errors\n\n\n @app.route('/')\n @validate_params(\n Param('day', GET, str, False, rules=[MyRule()])\n )\n def hi(day):\n return day\n\nOpen ``?day=today``. You will see the exception:\n\n::\n\n InvalidRequest: Invalid request data. {\"day\": [\"Value today is reserved\", \"One more error\"]}\n\nAlso you can combine rules(\\ ``CompositeRule``) for frequent using:\n\n::\n\n from flask_request_validator import CompositeRule\n\n\n name_rule = CompositeRule(Pattern(r'^[a-z-_.]{8,10}$'), one_more_rule, your_custom_rule, etc...)\n\n\n @app.route('/person')\n @validate_params(\n Param('first_name', GET, str, rules=name_rule),\n # other params is just example\n Param('streets', GET, list), should be sent as string `street1,stree2`\n Param('city', GET, str, rules=[Enum('Minsk')]),\n Param('meta', GET, dict), # should be sent as string `key1:val1,key2:val2`\n )\n def route_one(first_name, streets, city, meta):\n # print(first_name) (str)\n # print(streets) (list)\n # print(city) (str)\n # print(meta) (dict)\n\n.. |Build Status| image:: https://api.travis-ci.org/d-ganchar/flask_request_validator.svg?branch=master\n :target: https://travis-ci.org/d-ganchar/flask_request_validator\n.. |Coverage Status| image:: https://coveralls.io/repos/github/d-ganchar/flask_request_validator/badge.svg?branch=master\n :target: https://coveralls.io/github/d-ganchar/flask_request_validator?branch=master", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/d-ganchar/flask_request_validator", "keywords": "flask request validation", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "flask-request-validator", "package_url": "https://pypi.org/project/flask-request-validator/", "platform": "", "project_url": "https://pypi.org/project/flask-request-validator/", "project_urls": { "Homepage": "https://github.com/d-ganchar/flask_request_validator" }, "release_url": "https://pypi.org/project/flask-request-validator/2.1.1/", "requires_dist": null, "requires_python": "", "summary": "Flask request data validation", "version": "2.1.1" }, "last_serial": 5776139, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "762ef3e51843ae01e93ce640f9eb59a1", "sha256": "f07f437bb0395b26ff41ecacf2566e25a3a42e4680ab81eaf567113f6822aede" }, "downloads": -1, "filename": "flask_request_validator-1.0.0.tar.gz", "has_sig": false, "md5_digest": "762ef3e51843ae01e93ce640f9eb59a1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2770, "upload_time": "2017-04-09T15:09:43", "url": "https://files.pythonhosted.org/packages/bf/92/aef385392694f1bdd5b07a4701130052645e0aa1e74cad35d4e4ca0b2875/flask_request_validator-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "c7e35d5f923e0a76f5eb235b66d48ffa", "sha256": "c17185449b4e57a5b7b34a5ec1f27cf04d0ae17187d8e6944c1845013baad19c" }, "downloads": -1, "filename": "flask_request_validator-1.0.1.tar.gz", "has_sig": false, "md5_digest": "c7e35d5f923e0a76f5eb235b66d48ffa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2804, "upload_time": "2017-04-18T19:40:51", "url": "https://files.pythonhosted.org/packages/6c/ea/dc9e33b3e2d1ff5531bd1a871b422d25cb655411a1e64b62c7d11df013a7/flask_request_validator-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "3679be0a2c129fd2f3bfc7adac5e949b", "sha256": "5f845b595ffe9de2d36ad26d37ab3633f6c1a9617320e413abf1a11a8276e9b0" }, "downloads": -1, "filename": "flask_request_validator-1.0.2.tar.gz", "has_sig": false, "md5_digest": "3679be0a2c129fd2f3bfc7adac5e949b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2987, "upload_time": "2017-04-19T14:57:25", "url": "https://files.pythonhosted.org/packages/d0/f4/75f0d409e2c49cc2a25b745ca4762cc0e70acf0db0e4ea0aac4e7082815c/flask_request_validator-1.0.2.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "e7157ef7592b906ecf2f8539ff560dff", "sha256": "f1d2b721fbf12ff93af17274425759355989e9d1d8fdec11b24b9cb54d1846a6" }, "downloads": -1, "filename": "flask_request_validator-1.0.3.tar.gz", "has_sig": false, "md5_digest": "e7157ef7592b906ecf2f8539ff560dff", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3255, "upload_time": "2017-04-20T08:05:11", "url": "https://files.pythonhosted.org/packages/f0/71/e4dafbe839ee4564b726bae7083653b8741d3c3d643fe1776117ddc5a3c4/flask_request_validator-1.0.3.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "d99b1e92dfa670bfacaf3769d2b0a27c", "sha256": "c9ae5693af8caa8e634ffa1405f7627af28dee4b38f71f61b145dda72e205d77" }, "downloads": -1, "filename": "flask_request_validator-1.1.0.tar.gz", "has_sig": false, "md5_digest": "d99b1e92dfa670bfacaf3769d2b0a27c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3419, "upload_time": "2017-05-09T18:51:46", "url": "https://files.pythonhosted.org/packages/b3/05/83e7e223ff2b59d59c4f227236cab49c71575268d2f4dcd77c725195b320/flask_request_validator-1.1.0.tar.gz" } ], "2.0.0": [ { "comment_text": "", "digests": { "md5": "497232268f8c5257e2c2a57bc6d349bb", "sha256": "e1e4567d10db4c6f5189c69281b6fdd70f49994e2a1f453ecae7b8ad7855c0f9" }, "downloads": -1, "filename": "flask_request_validator-2.0.0.tar.gz", "has_sig": false, "md5_digest": "497232268f8c5257e2c2a57bc6d349bb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3231, "upload_time": "2017-06-23T13:31:49", "url": "https://files.pythonhosted.org/packages/5b/09/937ec9103e251ce1447cd1acadeb3094b7aaa850a8d0bfa7c1c132def9d4/flask_request_validator-2.0.0.tar.gz" } ], "2.0.1": [ { "comment_text": "", "digests": { "md5": "9a2ad5679e293a3a3a608955aa4c4731", "sha256": "1bf34abc07c32bf49b2b1c38eb986ad96777e8d5ec3a06b1e3f47a772495636c" }, "downloads": -1, "filename": "flask_request_validator-2.0.1.tar.gz", "has_sig": false, "md5_digest": "9a2ad5679e293a3a3a608955aa4c4731", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3238, "upload_time": "2017-07-14T16:55:44", "url": "https://files.pythonhosted.org/packages/bc/af/07fd8256704169a6e57d5d95797a5fb8fb78bed92f999ae18aeca5fedd24/flask_request_validator-2.0.1.tar.gz" } ], "2.0.2": [ { "comment_text": "", "digests": { "md5": "f6e006c60777d3c1a8d111fc3b0da1eb", "sha256": "c5e620552eac05f5a26afc0e536150e23c249dcdda78345c28374f4ddb57ee38" }, "downloads": -1, "filename": "flask_request_validator-2.0.2.tar.gz", "has_sig": false, "md5_digest": "f6e006c60777d3c1a8d111fc3b0da1eb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3278, "upload_time": "2017-09-08T12:46:26", "url": "https://files.pythonhosted.org/packages/48/bd/6e80485f301975b15071e378625aadd1c80b417c88e1e8c0b560e1c8047a/flask_request_validator-2.0.2.tar.gz" } ], "2.0.3": [ { "comment_text": "", "digests": { "md5": "a4656705af18b08db2586ea621a88caa", "sha256": "2cd5f924f6634643a07054f6214f86c64d923bda36b06841f6f3054d79f3a828" }, "downloads": -1, "filename": "flask_request_validator-2.0.3.tar.gz", "has_sig": false, "md5_digest": "a4656705af18b08db2586ea621a88caa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3291, "upload_time": "2017-09-26T06:53:48", "url": "https://files.pythonhosted.org/packages/e0/36/2795d3c27685d7c74edc0da4591a6edac4ef129dfca34585972e324ef380/flask_request_validator-2.0.3.tar.gz" } ], "2.1.0": [ { "comment_text": "", "digests": { "md5": "a8c01319338e377a6dd03ceec4e642d6", "sha256": "dfb7a8efd72fee3447f8b2c73aec803101b5deffec2372452dc884ae6dc4162e" }, "downloads": -1, "filename": "flask_request_validator-2.1.0.tar.gz", "has_sig": false, "md5_digest": "a8c01319338e377a6dd03ceec4e642d6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3475, "upload_time": "2018-02-15T13:48:19", "url": "https://files.pythonhosted.org/packages/64/14/57e2a2bd9bac29de99894d7fde8b8379aeaf1ed952931dfdaa4a847f524d/flask_request_validator-2.1.0.tar.gz" } ], "2.1.1": [ { "comment_text": "", "digests": { "md5": "af2bd80b62f43056d6d2431cb11d2db7", "sha256": "71f001eb0b03ed6896747f6bdb105e4233a64b6161a07eeec4939c49ffa685f3" }, "downloads": -1, "filename": "flask_request_validator-2.1.1.tar.gz", "has_sig": false, "md5_digest": "af2bd80b62f43056d6d2431cb11d2db7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5020, "upload_time": "2019-09-03T13:56:58", "url": "https://files.pythonhosted.org/packages/0f/6f/4ae63b0227fc8de1ea6639d9b43123a2a4af8ea2caa2de254f7325ab2a2a/flask_request_validator-2.1.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "af2bd80b62f43056d6d2431cb11d2db7", "sha256": "71f001eb0b03ed6896747f6bdb105e4233a64b6161a07eeec4939c49ffa685f3" }, "downloads": -1, "filename": "flask_request_validator-2.1.1.tar.gz", "has_sig": false, "md5_digest": "af2bd80b62f43056d6d2431cb11d2db7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5020, "upload_time": "2019-09-03T13:56:58", "url": "https://files.pythonhosted.org/packages/0f/6f/4ae63b0227fc8de1ea6639d9b43123a2a4af8ea2caa2de254f7325ab2a2a/flask_request_validator-2.1.1.tar.gz" } ] }