{ "info": { "author": "Mayfield Robotics", "author_email": "dev+thr33p@mayfieldrobotics.com", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python", "Topic :: Internet :: WWW/HTTP :: Dynamic Content", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "======\nthr33p\n======\n\n.. image:: https://travis-ci.org/mayfieldrobotics/thr33p.svg\n :target: https://travis-ci.org/mayfieldrobotics/thr33p\n\n\n.. image:: https://coveralls.io/repos/mayfieldrobotics/thr33p/badge.svg\n :target: https://coveralls.io/r/mayfieldrobotics/thr33p\n\nAuthenticating HTTP proxy for S3. Similar to these:\n\n- `s3proxy `_\n- `s3-proxy-auth `_\n- `ngx_aws_auth `_\n\nwhich *might* be better for you.\n\nquickstart\n----------\n\nCreate your config(s):\n\n.. code:: bash\n\n $ cat > ~/.thr33p/config.py < ~/.thr33p/gunicorn.py <`_:\n\n.. code:: bash\n\n $ sudo docker run -p 5000:8000 -v $HOME/.thr33p/:/etc/thr33p/ mayfieldrobotics/thr33p:latest --config=/etc/thr33p/gunicorn.py\n $ curl http://127.0.0.1:5000/dead-1.jpeg --header \"Host:weekend-at-bernies.s3.amazonaws.com\" -vvv\n\nor ghetto dev style:\n\n.. code:: bash\n\n $ mkvirtualenv thr33p\n (thr33p)$ pip install thr33p\n (thr33p)$ thr33p -d -p 5000 ~/.thr33p/config.py &\n (thr33p)$ curl http://127.0.0.1:5000/dead-1.jpeg --header \"Host:weekend-at-bernies.s3.amazonaws.com\" -vvv\n\nconfig\n------\n\nJust a python file like e.g. this:\n\n.. code:: python\n\n import os\n \n import certifi\n \n \n # passed to `urllib3.PoolManager`\n http_pool_manager = {\n 'cert_reqs': 'CERT_REQUIRED',\n 'ca_certs': certifi.where(),\n }\n \n buckets = {\n # authenticates buckets matching literal \"wake-at-bernies\" using temporary iam-role creds\n r'wake-at-bernies': {\n 'creds': None\n }\n \n # authenticates buckets matching literal \"evening-at-bernies\" using env creds\n r'evening-at-bernies': {\n 'creds': {\n 'access_key_id': os.environ['AWS_ACCESS_KEY_ID'],\n 'secret_access_key':os.environ['AWS_SECRET_ACCESS_KEY'],\n }\n }\n \n # authenticates buckets matching regex \".+-at-bernies\" using baked creds\n r'~.+-at-bernies': {\n 'creds': {\n 'access_key_id': 'EXAMPLE',\n 'secret_access_key': 'EXAMPLEKEY',\n },\n }\n }\n\ndev\n---\n\nGet it:\n\n.. code:: bash\n\n $ git clone git@github.com:mayfieldrobotics/thr33p.git \n $ cd thr33p\n $ pip install -e .[tests]\n \n \ntest it:\n\n.. code:: bash\n\n $ py.test tests/ --cov thr33p.py\n \nand build docker images:\n\n.. code:: bash\n\n $ sudo docker build -t {your-account}/thr33p .\n\nrelease\n-------\n\nAll is well:\n\n.. code:: bash\n\n $ py.test tests/ --cov thr33p.py\n\nso update ``__version__`` in:\n\n- ``thr33p.py``\n\ntag it (travis will publish it to `pypi `_):\n\n.. code:: bash\n\n $ git commit -am \"release v{version}\"\n $ git tag -a v{version} -m \"release v{version}\"\n $ git push --tags\n\nand register the tag with `docker `_ so others can just:\n\n.. code:: bash\n\n $ sudo docker pull mayfieldrobotics/thr33p:{version}", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/mayfieldrobotics/thr33p", "keywords": "", "license": "BSD", "maintainer": "", "maintainer_email": "", "name": "thr33p", "package_url": "https://pypi.org/project/thr33p/", "platform": "any", "project_url": "https://pypi.org/project/thr33p/", "project_urls": { "Homepage": "https://github.com/mayfieldrobotics/thr33p" }, "release_url": "https://pypi.org/project/thr33p/0.2.0/", "requires_dist": null, "requires_python": "", "summary": ".", "version": "0.2.0" }, "last_serial": 2111124, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "da23c1cf09a0561c3f8d805715bfe893", "sha256": "9220fb86371b5acbc2b284d53237dfc0498b9ca6348bf4b3ca23a1c3329ec03c" }, "downloads": -1, "filename": "thr33p-0.1.0.tar.gz", "has_sig": false, "md5_digest": "da23c1cf09a0561c3f8d805715bfe893", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3239, "upload_time": "2015-03-27T18:40:29", "url": "https://files.pythonhosted.org/packages/f5/e6/f27f20e5f43f979af1d33add7d53340e3afc24d7029ce4b1eb2668b699f7/thr33p-0.1.0.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "d2d9ffc5e4f07204092b5545db2325ca", "sha256": "2970f150b30e5b51e6a71c6674affb0a3b05018e84605ef51a74a7988cb8c477" }, "downloads": -1, "filename": "thr33p-0.2.0.tar.gz", "has_sig": false, "md5_digest": "d2d9ffc5e4f07204092b5545db2325ca", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3251, "upload_time": "2016-05-11T18:18:18", "url": "https://files.pythonhosted.org/packages/40/de/f06bc4fbf999fe9e4da6fd41392a67137c694b1dd744cd963a164806b496/thr33p-0.2.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "d2d9ffc5e4f07204092b5545db2325ca", "sha256": "2970f150b30e5b51e6a71c6674affb0a3b05018e84605ef51a74a7988cb8c477" }, "downloads": -1, "filename": "thr33p-0.2.0.tar.gz", "has_sig": false, "md5_digest": "d2d9ffc5e4f07204092b5545db2325ca", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3251, "upload_time": "2016-05-11T18:18:18", "url": "https://files.pythonhosted.org/packages/40/de/f06bc4fbf999fe9e4da6fd41392a67137c694b1dd744cd963a164806b496/thr33p-0.2.0.tar.gz" } ] }