{ "info": { "author": "Sensidev", "author_email": "lucian.corduneanu@sensidev.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6" ], "description": "======================================\nHTTP Requests with JWT support for DRF\n======================================\n\nThis is a simple helper used to communicate between Django instances.\n\nIt is suited to work well with Django Rest Framework API points and serializers.\n\nFeatures\n--------\n\n- Authenticate with JWT if not already\n- Cache JWT with different backends (for now Django Cache and File System)\n- Request all pages, before delivering the result\n- Deserialize the result with standard DRF serializer classes\n\nInstall it\n----------\n\n``pip install drf_requests_jwt``\n\nHow to use it\n-------------\n\nAssuming there is a `devices` paginated API point on another Django instance and you need all devices fetched.\n\nThen you'll inherit from `HttpRequestService` and implement the abstract methods something along these lines:\n\n::\n\n from apps.devices.models import Device # Your Device Django model.\n from rest_framework import serializers\n\n from drf_requests_jwt.services import HttpRequestService\n\n\n class DeviceSerializer(serializers.Serializer):\n eui = serializers.CharField()\n\n def create(self, validated_data):\n return Device(**validated_data)\n\n\n class DeviceHttpRequestService(HttpRequestService):\n obtain_jwt_allowed_fail_attempts = 3\n cache_backend_class = 'drf_requests_jwt.backends.django_cache.DjangoCacheBackend'\n\n def _get_base_url(self):\n return 'https://example.com'\n\n def _get_jwt_login_url_path(self):\n return 'api/v1/auth/jwt/login/'\n\n def _get_url_path(self):\n return 'api/v1/devices/'\n\n def _get_username(self):\n return 'john'\n\n def _get_password(self):\n return 'snow'\n\n def _get_params(self):\n return {\n 'param1': 'val1',\n 'param2': 'val2',\n }\n\n def get_deserialized_data(self):\n device_list = []\n\n for device in self.get_results_from_all_pages():\n serializer = DeviceSerializer(data=device)\n if serializer.is_valid():\n device_list.append(serializer.save())\n\n return device_list\n\n\nNow in your business logic where you need the list of devices you'll call it like this:\n\n\n``devices = DeviceHttpRequestService().get_deserialized_data()``\n\nMixins\n------\n\nThere is a mixin helping with deserialization.\n\n::\n\n from drf_requests_jwt.deserializers import ObjectListDeserializerMixin\n from apps.devices.serializers import DeviceSerializer # Your device serializer.\n\n class DeviceDeserializerMixin(ObjectListDeserializerMixin):\n serializer_class = DeviceSerializer\n\n class DeviceHttpRequestService(DeviceDeserializerMixin, HttpRequestService):\n # ... Other abstract methods implemented\n\n def get_deserialized_data(self):\n return self.get_deserialized_object_list()\n\nConclusion\n----------\n\nThis is quite a specific helper that works well for our use case, but I think it can be easily adjusted to fit other needs.\n\nPlease feel free to bring your pull requests. Thanks.\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/sensidev/drf-requests-jwt", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "drf-requests-jwt", "package_url": "https://pypi.org/project/drf-requests-jwt/", "platform": "", "project_url": "https://pypi.org/project/drf-requests-jwt/", "project_urls": { "Homepage": "https://github.com/sensidev/drf-requests-jwt" }, "release_url": "https://pypi.org/project/drf-requests-jwt/0.9/", "requires_dist": [ "requests (>=2.18.1)", "python-slugify (>=1.2.4)" ], "requires_python": "", "summary": "Django Rest Framework Requests with JWT support", "version": "0.9" }, "last_serial": 5170358, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "a458ab9a0e1f7008c6be41f29147d6d6", "sha256": "be582497852ea487834a8edfc167f7381d98a3a76238e59dc9b781dfb992d8ab" }, "downloads": -1, "filename": "drf_requests_jwt-0.1.tar.gz", "has_sig": false, "md5_digest": "a458ab9a0e1f7008c6be41f29147d6d6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2710, "upload_time": "2017-08-30T12:12:51", "url": "https://files.pythonhosted.org/packages/15/2f/31aea5d41c03cbc7469274869f19d3c2bdcdda77adfcfb52315f1046e515/drf_requests_jwt-0.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "4f47376dfca3cdf829be4a3b4d873ec2", "sha256": "b51ba65396fc042c0356e6dea981ffb4a2ed504e158f481c1317ab62e7e36917" }, "downloads": -1, "filename": "drf_requests_jwt-0.2.tar.gz", "has_sig": false, "md5_digest": "4f47376dfca3cdf829be4a3b4d873ec2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4878, "upload_time": "2017-08-30T12:25:46", "url": "https://files.pythonhosted.org/packages/03/e1/0cae8802975b72fff92680c271a6a1a7a9da2b7ff69367a7b0422e86d67b/drf_requests_jwt-0.2.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "ce8ecf499f5ad75569c55a4e344e80f9", "sha256": "b337382fe44c26c860e3fa4c2625bf5555552fc6e0c135bd179e4d0fed2a574b" }, "downloads": -1, "filename": "drf_requests_jwt-0.3.tar.gz", "has_sig": false, "md5_digest": "ce8ecf499f5ad75569c55a4e344e80f9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6163, "upload_time": "2017-08-31T09:41:26", "url": "https://files.pythonhosted.org/packages/6a/2f/7e73c138b9323436dfa96dba8f3ec45cada9b98e79edee94bff91f0b2ed7/drf_requests_jwt-0.3.tar.gz" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "b0688846a9bb514b5e932be28b12044e", "sha256": "3c2fb337fec17058eb8f0ea86444de0baa59758d73816786c63e528217403e50" }, "downloads": -1, "filename": "drf_requests_jwt-0.4.tar.gz", "has_sig": false, "md5_digest": "b0688846a9bb514b5e932be28b12044e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6402, "upload_time": "2017-08-31T09:45:03", "url": "https://files.pythonhosted.org/packages/14/54/84491d630591484e2fc670c55e428e7706ec1284353dab4e454b6d64820b/drf_requests_jwt-0.4.tar.gz" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "f90d59485346ee4f517dc25a4a736179", "sha256": "642f541f06eaa75f30c2f775d74ecbb4069e240fa905c5a7a2a2fca0edd4b918" }, "downloads": -1, "filename": "drf_requests_jwt-0.5.tar.gz", "has_sig": false, "md5_digest": "f90d59485346ee4f517dc25a4a736179", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6438, "upload_time": "2017-08-31T09:54:03", "url": "https://files.pythonhosted.org/packages/a8/4b/a7e49ed6e4554af135e0e8c6ef2680d56fe809869e2b40a316fc3eb25e37/drf_requests_jwt-0.5.tar.gz" } ], "0.6": [ { "comment_text": "", "digests": { "md5": "6572a18c8d3416d9dbb45f606fe6c17f", "sha256": "c6781d74cec4e13a6292c8a8e120a00fd796f2a15e12718820433b35a666383b" }, "downloads": -1, "filename": "drf_requests_jwt-0.6.tar.gz", "has_sig": false, "md5_digest": "6572a18c8d3416d9dbb45f606fe6c17f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6515, "upload_time": "2017-09-01T08:48:36", "url": "https://files.pythonhosted.org/packages/7e/32/0fc7d4eb8dee3d4a5c31b4554404223579da25f12309efba1302f5b764ba/drf_requests_jwt-0.6.tar.gz" } ], "0.7": [ { "comment_text": "", "digests": { "md5": "e1735e986e06b9bc8b083ea4b247c4ea", "sha256": "0a6056a84fd3561eb5bc7a5c2367fb349e9b207477a71d2581241ebe022a73f9" }, "downloads": -1, "filename": "drf_requests_jwt-0.7-py3-none-any.whl", "has_sig": false, "md5_digest": "e1735e986e06b9bc8b083ea4b247c4ea", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11816, "upload_time": "2019-04-19T23:10:11", "url": "https://files.pythonhosted.org/packages/94/c4/a439578c1ef6242bdc39d95f18c7cc24d61a1ef781feb9ecadec5501b715/drf_requests_jwt-0.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8f07a33daeb7a46cc863e7944799e6cd", "sha256": "89f848a3091f27042710dd2458df54454ed578c8490c9d4617f4d201f3d34d0f" }, "downloads": -1, "filename": "drf_requests_jwt-0.7.tar.gz", "has_sig": false, "md5_digest": "8f07a33daeb7a46cc863e7944799e6cd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8082, "upload_time": "2019-04-19T23:10:13", "url": "https://files.pythonhosted.org/packages/e4/e3/32da9c83ec9c6dd0e26b0b9463d92abbe07a2e40bddd017e5b4dd6fdc8e4/drf_requests_jwt-0.7.tar.gz" } ], "0.8": [ { "comment_text": "", "digests": { "md5": "bcad5e020a6dec9a39deb99836ff6aae", "sha256": "34ea4142dbbfa949c2807d60cc72136d8542a9c639baf5755fb7f9ffe9cd9376" }, "downloads": -1, "filename": "drf_requests_jwt-0.8-py3-none-any.whl", "has_sig": false, "md5_digest": "bcad5e020a6dec9a39deb99836ff6aae", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11781, "upload_time": "2019-04-21T17:38:38", "url": "https://files.pythonhosted.org/packages/f1/b2/0012f2c6f0e7db89ff65d295e811fb42b019e384fb23c612064d3839af99/drf_requests_jwt-0.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3c943480290924d8d33fdd8fc3eded2f", "sha256": "9c49f9bceb8131b8d39e9f87b9b5bd8bd1b64c1715d1f509b85ca47fa534d3bf" }, "downloads": -1, "filename": "drf_requests_jwt-0.8.tar.gz", "has_sig": false, "md5_digest": "3c943480290924d8d33fdd8fc3eded2f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8084, "upload_time": "2019-04-21T17:38:40", "url": "https://files.pythonhosted.org/packages/ac/36/61baa462ee5c910bb22c731d599e532555825d687e58e44f593e2837b8eb/drf_requests_jwt-0.8.tar.gz" } ], "0.9": [ { "comment_text": "", "digests": { "md5": "015758975a1fd4478a3cdcfe4fd5dc1b", "sha256": "2a3b7d105cf8d3821259ccc0a14a96d208ecc519caaff6bbf8389ee830a1093d" }, "downloads": -1, "filename": "drf_requests_jwt-0.9-py3-none-any.whl", "has_sig": false, "md5_digest": "015758975a1fd4478a3cdcfe4fd5dc1b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11792, "upload_time": "2019-04-21T17:44:38", "url": "https://files.pythonhosted.org/packages/2a/02/10ed6e7cd1f0fc4883c77953d9ec9a1821f695f73a5a0bf465e6b75d3fdf/drf_requests_jwt-0.9-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3be31687c4f06f0be512459a5ace395c", "sha256": "aa0beb71f2ef489ac6aa3e86b86069b5f43b08d35ebe47beaa2c7f4313c0a28e" }, "downloads": -1, "filename": "drf_requests_jwt-0.9.tar.gz", "has_sig": false, "md5_digest": "3be31687c4f06f0be512459a5ace395c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8099, "upload_time": "2019-04-21T17:44:41", "url": "https://files.pythonhosted.org/packages/7e/c9/5d95324d50739956381d8ecc9c73104bc538b29a87d821f65fc75a3389e5/drf_requests_jwt-0.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "015758975a1fd4478a3cdcfe4fd5dc1b", "sha256": "2a3b7d105cf8d3821259ccc0a14a96d208ecc519caaff6bbf8389ee830a1093d" }, "downloads": -1, "filename": "drf_requests_jwt-0.9-py3-none-any.whl", "has_sig": false, "md5_digest": "015758975a1fd4478a3cdcfe4fd5dc1b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11792, "upload_time": "2019-04-21T17:44:38", "url": "https://files.pythonhosted.org/packages/2a/02/10ed6e7cd1f0fc4883c77953d9ec9a1821f695f73a5a0bf465e6b75d3fdf/drf_requests_jwt-0.9-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3be31687c4f06f0be512459a5ace395c", "sha256": "aa0beb71f2ef489ac6aa3e86b86069b5f43b08d35ebe47beaa2c7f4313c0a28e" }, "downloads": -1, "filename": "drf_requests_jwt-0.9.tar.gz", "has_sig": false, "md5_digest": "3be31687c4f06f0be512459a5ace395c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8099, "upload_time": "2019-04-21T17:44:41", "url": "https://files.pythonhosted.org/packages/7e/c9/5d95324d50739956381d8ecc9c73104bc538b29a87d821f65fc75a3389e5/drf_requests_jwt-0.9.tar.gz" } ] }