{ "info": { "author": "Matt Caldwell", "author_email": "matt.caldwell@gmail.com", "bugtrack_url": null, "classifiers": [], "description": "[![Latest Version](https://pypip.in/version/django-smart-proxy/badge.svg)](https://pypi.python.org/pypi/django-smart-proxy/)\n[![Downloads](https://pypip.in/download/django-smart-proxy/badge.svg)](https://pypi.python.org/pypi/django-smart-proxy/)\n\nDjango Smart Proxy\n==================\nDjango Smart Proxy is a plug-and-play solution for implementing pass-through proxies in\na Django-based environment.\n\n**Extensibility**
\nDjango Smart Proxy exposes a *request_decorators* parameter that makes it easily\nextensible, allowing access to the request \"pipeline\" before being sent to the host.\n\n**Common Use Cases**\n- Handling OAuth on the server-side to avoid exposing secret keys to the client.\n- As an alternative to CORS for making cross-domain AJAX requests.\n- Anything else...?\n\n\nInstallation\n============\n**Requires**\n- Python >= 2.6 (supports up to 3.4)\n- Django >= 1.4 (Python 2 support up to 1.6.x)\n\n*For all requirements, see setup.py.*\n\n**Installing**\n```\npip install django-smart-proxy\n```\n\nUsage\n=====\n1. Add ```smart_proxy``` to ```INSTALLED_APPS``` in your ```settings.py```.\n \n **Example**\n ```python\n INSTALLED_APPS = (\n ...,\n 'smart_proxy',\n ...,\n )\n ```\n\n2. Add a ```SMART_PROXIES``` dictionary to ```settings.py``` to configure an arbitrary number of proxies.\n \n **Example**\n ```python\n SMART_PROXIES = {\n 'instagram': {\n 'host_endpoint': 'https://api.instagram.com/v1/',\n 'allowed_methods': ('get', 'put', 'post', 'delete',),\n 'timeout': 60.0,\n },\n 'twitter': {\n 'host_endpoint': 'https://api.twitter.com/1.1/',\n 'allowed_methods': ('get', 'put', 'post', 'delete',),\n 'timeout': 60.0,\n 'request_decorators': (\n 'channel.apps.twitter_auth.utils.append_authorization_header',\n ),\n },\n }\n ```\n3. Edit your ```urls.py``` to configure a root URL mapping for the proxies.\n \n **Example**\n ```python\n urlpatterns = patterns(\n ...,\n url(r'^proxy/', include('smart_proxy.urls')),\n ...,\n )\n ```\n4. If applicable, provide an implementation for your request decorators.\n\n **Example**\n ```python\n from django.conf import settings\n from requests_oauthlib import OAuth1\n \n def append_authorization_header(request, session):\n \"\"\"\n This function decorates requests to the Twitter proxy with a\n signed oauth-compliant Authorization header.\n \"\"\"\n \n client_key = getattr(settings, 'SOCIAL_AUTH_TWITTER_KEY', None)\n client_secret = getattr(settings, 'SOCIAL_AUTH_TWITTER_SECRET', None)\n \n if client_key and client_secret:\n request.auth = OAuth1(\n client_key,\n client_secret=client_secret,\n resource_owner_key=session.get('twitter_oauth_token'),\n resource_owner_secret=session.get('twitter_oauth_token_secret'))\n \n return request\n ```\n5. You're Done!\n\nIn this example, your proxies will be available at ```/proxy/instagram/``` and ```/proxy/twitter/``` respectively.", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/celerityweb/django-smart-proxy/", "keywords": null, "license": "MIT - see LICENSE file", "maintainer": null, "maintainer_email": null, "name": "django-smart-proxy", "package_url": "https://pypi.org/project/django-smart-proxy/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/django-smart-proxy/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/celerityweb/django-smart-proxy/" }, "release_url": "https://pypi.org/project/django-smart-proxy/0.2.1/", "requires_dist": null, "requires_python": null, "summary": "The django-smart-proxy app allows you to configure plug-and-play reverse proxy solutions for social networks and other complex integration points with your website.", "version": "0.2.1" }, "last_serial": 1446470, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "4c916d741b56c7693f50c2a92dc82cc2", "sha256": "58dea7b46e17c56c3bd1d31a220d5eee318e76cecb1b421fc4e40d3f0e45e177" }, "downloads": -1, "filename": "django-smart-proxy-0.0.1.tar.gz", "has_sig": false, "md5_digest": "4c916d741b56c7693f50c2a92dc82cc2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13057, "upload_time": "2014-11-21T21:19:46", "url": "https://files.pythonhosted.org/packages/38/f2/ecc1f6be51b03951d92f857409ecb1d2343e3866f289d193337d0279739e/django-smart-proxy-0.0.1.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "faad70c191c2ec541259205f150c60c0", "sha256": "39698e94919f0c75d950a9bce2bbfc9cd562f62fccdb64990aa54f927c99aa36" }, "downloads": -1, "filename": "django-smart-proxy-0.1.0.tar.gz", "has_sig": false, "md5_digest": "faad70c191c2ec541259205f150c60c0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12061, "upload_time": "2014-11-26T19:51:58", "url": "https://files.pythonhosted.org/packages/45/7c/1d6455084f26e1f1645c227e29eb3babbe8df741512cc5bc11cca27b4033/django-smart-proxy-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "44c7efc8e5f6c8b66730965b38c51f96", "sha256": "9772177c91c3bf48cd040c8acf8028b57d8b8f2e6c60613db6a7f8580d09463c" }, "downloads": -1, "filename": "django-smart-proxy-0.1.1.tar.gz", "has_sig": false, "md5_digest": "44c7efc8e5f6c8b66730965b38c51f96", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12080, "upload_time": "2014-11-26T21:03:34", "url": "https://files.pythonhosted.org/packages/25/63/893b69b0cf0f492e0c03e2e209778a169209fa042c1e0fa2e82b03c078e8/django-smart-proxy-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "78db255987298526938fa0f90d133f17", "sha256": "3e84df4d476b78c81193bc96d4321fbdf6d5d95d322307ee67633b32a9097dbe" }, "downloads": -1, "filename": "django-smart-proxy-0.1.2.tar.gz", "has_sig": false, "md5_digest": "78db255987298526938fa0f90d133f17", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12111, "upload_time": "2014-11-26T21:17:13", "url": "https://files.pythonhosted.org/packages/54/f1/e9c45ec99218edeb8a4f5bc184208336c8c9117f7cc8ed91c73f80b523a9/django-smart-proxy-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "f71d20db18d7e9b3b85b946eee7c3bf2", "sha256": "a33ebd249cf0bf822754ea51ea8067977078244a34653ca0435fd5c1974453b6" }, "downloads": -1, "filename": "django-smart-proxy-0.1.3.tar.gz", "has_sig": false, "md5_digest": "f71d20db18d7e9b3b85b946eee7c3bf2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12117, "upload_time": "2014-11-26T21:57:29", "url": "https://files.pythonhosted.org/packages/93/23/8558f383213a9099226d327c26af4c1a36fb58dfb539e11dd0c11e04b755/django-smart-proxy-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "accfb282d717e376710d63ef5727105a", "sha256": "a9f6543f83aae93478a6b301410a3e831919aa9b278f98eb5972bad975131b73" }, "downloads": -1, "filename": "django-smart-proxy-0.1.4.tar.gz", "has_sig": false, "md5_digest": "accfb282d717e376710d63ef5727105a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12173, "upload_time": "2014-11-26T22:57:20", "url": "https://files.pythonhosted.org/packages/4a/97/f552b071dc10c390e81da45092004bf2f8b43852b6c13032ed750ef3848a/django-smart-proxy-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "6bdcf2872a504019824a081bcebea1fd", "sha256": "372156ff6f86e84a6e795fd24c2dffa321979f8364cffa441b2bac8ae17d8263" }, "downloads": -1, "filename": "django-smart-proxy-0.1.5.tar.gz", "has_sig": false, "md5_digest": "6bdcf2872a504019824a081bcebea1fd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12272, "upload_time": "2014-11-26T23:39:13", "url": "https://files.pythonhosted.org/packages/c5/60/af78adf62685bb671fda7cde2f58bda0150e0cd22a7b1c5116692b2da7a9/django-smart-proxy-0.1.5.tar.gz" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "6670783d5b2756553113121b89861a4a", "sha256": "2a9354987481fa37f2418d4919d007c2b41e59c30661c6186cfcd3410d923472" }, "downloads": -1, "filename": "django-smart-proxy-0.1.6.tar.gz", "has_sig": false, "md5_digest": "6670783d5b2756553113121b89861a4a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6508, "upload_time": "2014-11-27T02:37:27", "url": "https://files.pythonhosted.org/packages/b6/03/d57f2dac073f41688213231243719b0562c824402238893f5e1c828059c1/django-smart-proxy-0.1.6.tar.gz" } ], "0.1.7": [ { "comment_text": "", "digests": { "md5": "66991008a4f790451fb153818df13658", "sha256": "95de0208cb8d884c33ffde8bd9c439e650918954f623ea36c9bf67d296c81cb7" }, "downloads": -1, "filename": "django-smart-proxy-0.1.7.tar.gz", "has_sig": false, "md5_digest": "66991008a4f790451fb153818df13658", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6284, "upload_time": "2014-12-02T20:14:51", "url": "https://files.pythonhosted.org/packages/2c/c9/c3cfaef1b415fe5188bd9f0db6550367a5b78a6bc90411f05c2e7751a9d6/django-smart-proxy-0.1.7.tar.gz" } ], "0.1.8": [ { "comment_text": "", "digests": { "md5": "699387101776f4074f83e15983665007", "sha256": "97201f7e8929fb1a63a59c573cedc7dd5b529f99ca43d94cd77a6d73110a53ab" }, "downloads": -1, "filename": "django-smart-proxy-0.1.8.tar.gz", "has_sig": false, "md5_digest": "699387101776f4074f83e15983665007", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6282, "upload_time": "2014-12-02T20:26:36", "url": "https://files.pythonhosted.org/packages/1b/24/b5066d141f6f9b3e506ccc77c4f36ab26ab140f96d236106d36c1801d881/django-smart-proxy-0.1.8.tar.gz" } ], "0.1.9": [ { "comment_text": "", "digests": { "md5": "3dd5a54117948c7fe2bdaf8b26406358", "sha256": "7de8d3270b10b45b065b78cd895bebecbf7c5030ff9efa76ba9b72502d429b4c" }, "downloads": -1, "filename": "django-smart-proxy-0.1.9.tar.gz", "has_sig": false, "md5_digest": "3dd5a54117948c7fe2bdaf8b26406358", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6286, "upload_time": "2014-12-03T18:40:48", "url": "https://files.pythonhosted.org/packages/3f/af/dea4ccc40f7f605cf9700472a953390ff708ae7223938a6a9c3390636e0a/django-smart-proxy-0.1.9.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "9bc5a5eab2002553a05e8e57a0d13eba", "sha256": "d53de798aad2d07ccf1e8f930d6131848522c47a36ad12b03c717667f382511b" }, "downloads": -1, "filename": "django-smart-proxy-0.2.0.tar.gz", "has_sig": false, "md5_digest": "9bc5a5eab2002553a05e8e57a0d13eba", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6392, "upload_time": "2014-12-03T19:07:56", "url": "https://files.pythonhosted.org/packages/c8/1a/652a3191c36153963b9e9f9fb32924e263ad8d009b45dc499e1a8ba6e989/django-smart-proxy-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "built for Darwin-13.4.0", "digests": { "md5": "ff55feb148993bfa12a89927309d9444", "sha256": "487ed262825db20c5d767ae665d1a70ebd12b2f62d712f13889850aa7588ca3e" }, "downloads": -1, "filename": "django-smart-proxy-0.2.1.macosx-10.9-x86_64.tar.gz", "has_sig": false, "md5_digest": "ff55feb148993bfa12a89927309d9444", "packagetype": "bdist_dumb", "python_version": "any", "requires_python": null, "size": 16037, "upload_time": "2015-03-03T18:56:12", "url": "https://files.pythonhosted.org/packages/93/2b/aa41e8e2f5fc0c1b81f8404b1789b053af400390885ae2bac0110ee4917d/django-smart-proxy-0.2.1.macosx-10.9-x86_64.tar.gz" }, { "comment_text": "", "digests": { "md5": "2f9e80bcbab2204ab669be44fa79c94a", "sha256": "a1f9f8b4ab7fc17bf9b0d4e4f68a45dec25bad5c4f0831d2d1ac86e4304e6e48" }, "downloads": -1, "filename": "django-smart-proxy-0.2.1.tar.gz", "has_sig": false, "md5_digest": "2f9e80bcbab2204ab669be44fa79c94a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7707, "upload_time": "2015-03-03T18:56:09", "url": "https://files.pythonhosted.org/packages/61/5f/5f35bea47a00250db084f509da9b86ca9f1c344c8c8d280e3348d94250d6/django-smart-proxy-0.2.1.tar.gz" } ] }, "urls": [ { "comment_text": "built for Darwin-13.4.0", "digests": { "md5": "ff55feb148993bfa12a89927309d9444", "sha256": "487ed262825db20c5d767ae665d1a70ebd12b2f62d712f13889850aa7588ca3e" }, "downloads": -1, "filename": "django-smart-proxy-0.2.1.macosx-10.9-x86_64.tar.gz", "has_sig": false, "md5_digest": "ff55feb148993bfa12a89927309d9444", "packagetype": "bdist_dumb", "python_version": "any", "requires_python": null, "size": 16037, "upload_time": "2015-03-03T18:56:12", "url": "https://files.pythonhosted.org/packages/93/2b/aa41e8e2f5fc0c1b81f8404b1789b053af400390885ae2bac0110ee4917d/django-smart-proxy-0.2.1.macosx-10.9-x86_64.tar.gz" }, { "comment_text": "", "digests": { "md5": "2f9e80bcbab2204ab669be44fa79c94a", "sha256": "a1f9f8b4ab7fc17bf9b0d4e4f68a45dec25bad5c4f0831d2d1ac86e4304e6e48" }, "downloads": -1, "filename": "django-smart-proxy-0.2.1.tar.gz", "has_sig": false, "md5_digest": "2f9e80bcbab2204ab669be44fa79c94a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7707, "upload_time": "2015-03-03T18:56:09", "url": "https://files.pythonhosted.org/packages/61/5f/5f35bea47a00250db084f509da9b86ca9f1c344c8c8d280e3348d94250d6/django-smart-proxy-0.2.1.tar.gz" } ] }