{ "info": { "author": "Emile Caron", "author_email": "emile.caron@outlook.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3.6", "Topic :: Software Development :: Build Tools" ], "description": "# ftp-proxy ![travis](https://travis-ci.com/uptilab2/ftp-proxy.svg?branch=master)\nHttp proxy to interact with FTP servers\n\n## Install\n`pip install ftp-proxy`\n\n## Deployment\nUse the provided [docker image](https://hub.docker.com/r/emilecaron/ftp-proxy)\n\n## Usage\n### Using the python client\nSee [client repository](https://github.com/uptilab2/ftp-proxy-client)\n\n### Using an http client\nftp-proxy can be used with any http client\n\n#### Authentication headers\nAll api routes expect the same authentication headers\n\n| Header | Content | Default\u00a0|\n|--------|---------|---------|\n| `X-ftpproxy-host` | server host | No default, mandatory header |\n| `X-ftpproxy-port` | server port | 21 |\n| `X-ftpproxy-user` | login | anonymous |\n| `X-ftpproxy-password` | password | |\n\n#### Available routes\n\n##### Ping (/ftp/ping)\nTest connection to the remote FTP server\nReturns HTTP 200 on success\n\n##### LS (ftp/ls)\nList the files on the ftp server\nOptional parameters:\n- path (string): path to list content. Defaults to \"/\"\n- recursive (true/false): recurse down subdirectories. Defaults to \"false\"\n- extension (string): list only files with matching extension if provided (example: \".py\")\n\nResponse:\n```javascript\n[\"/file1.txt\", \"/other.py\", \"/folder\", \"/folder/nested.txt\", \"/folder/subfolder\"]\n```\n\n##### Download (/ftp/download)\nDownload a file from the ftp server\nMandatory parameters:\n- path (string): path to file to download\n\n##### SFTP support\nSFTP support API is roughly the same as ftp, and can be achieved by switching the url prefixes from ftp to sftp\nThe following features are not yet available for SFTP:\n- recursive listing\n- extension filtering\n\n#### Errors\nIf an error occured on the proxy or the FTP server, the request will return a HTTP 400 json response with the following format\n```javascript\n{\n \"error\": \"\"\n}\n```\n\n## Development\n### Setup\n```sh\ngit clone git@github.com:uptilab2/ftp-proxy.git\ncd ftp-proxy\n\n# Project uses pipenv for dependency management\n# so it should be installed first\npipenv install --dev\n\n# Run the tests:\npipenv run py.test\n\n# Run the development server:\npipenv run python -m aiohttp.web -H 0.0.0.0 -P 5000 ftp_proxy:init_func\n```\n\n## Deployment\n```\n pipenv run python setup.py test\n pipenv run python setup.py sdist\n pipenv run python setup.py bdist_wheel\n pipenv run python setup.py upload\n```\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/uptilab2/ftp_proxy", "keywords": "ftp proxy", "license": "", "maintainer": "", "maintainer_email": "", "name": "ftp-proxy", "package_url": "https://pypi.org/project/ftp-proxy/", "platform": "", "project_url": "https://pypi.org/project/ftp-proxy/", "project_urls": { "Homepage": "https://github.com/uptilab2/ftp_proxy", "Source": "https://github.com/uptilab2/ftp_proxy" }, "release_url": "https://pypi.org/project/ftp-proxy/0.0.18/", "requires_dist": [ "aiohttp", "aioftp", "asyncssh", "pytest ; extra == 'dev'", "pytest-aiohttp ; extra == 'dev'", "flake8 ; extra == 'dev'" ], "requires_python": "", "summary": "A http to ftp proxy server application", "version": "0.0.18" }, "last_serial": 5291098, "releases": { "0.0.10": [ { "comment_text": "", "digests": { "md5": "25396b9ff1d1aa951b751cd9386d119a", "sha256": "191de6ca3d294a02d7166e9665bf3bba04b64cbfe612dd09ab6e15cb993ab151" }, "downloads": -1, "filename": "ftp_proxy-0.0.10-py3-none-any.whl", "has_sig": false, "md5_digest": "25396b9ff1d1aa951b751cd9386d119a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7122, "upload_time": "2019-05-20T06:38:39", "url": "https://files.pythonhosted.org/packages/9c/5e/a1273211d8378d696b794bbcb1989f8b77e1291185223d070fa4f9a97b31/ftp_proxy-0.0.10-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8d8372c456a17469d71a16aa17ad603c", "sha256": "62270bb0b8c30115c095acb17c78baa856f72138b50bf13aa2db2b408f37fe22" }, "downloads": -1, "filename": "ftp-proxy-0.0.10.tar.gz", "has_sig": false, "md5_digest": "8d8372c456a17469d71a16aa17ad603c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7583, "upload_time": "2019-05-20T06:38:41", "url": "https://files.pythonhosted.org/packages/76/65/08e583698d1b0f470dd17cf4d2fcab59e8ec7337852c85c22827c5ae6154/ftp-proxy-0.0.10.tar.gz" } ], "0.0.11": [ { "comment_text": "", "digests": { "md5": "4cd3a02fd4b3837603e502f9f12d27bc", "sha256": "3044dfc131f41179f88a893800d4042a8c5835435e0350a35c322dc76922daa0" }, "downloads": -1, "filename": "ftp_proxy-0.0.11-py3-none-any.whl", "has_sig": false, "md5_digest": "4cd3a02fd4b3837603e502f9f12d27bc", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7175, "upload_time": "2019-05-20T06:56:18", "url": "https://files.pythonhosted.org/packages/04/08/6e38e491cf54d913505e837c4c96a99ec75536867d11f2bb681678fb4b0d/ftp_proxy-0.0.11-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7dd9567a2932a6a2a0e865ede9485b95", "sha256": "102175b39190b6bf9a0765809d2ec35e13c807ddafe8957217ac04c7d74a8715" }, "downloads": -1, "filename": "ftp-proxy-0.0.11.tar.gz", "has_sig": false, "md5_digest": "7dd9567a2932a6a2a0e865ede9485b95", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7660, "upload_time": "2019-05-20T06:56:19", "url": "https://files.pythonhosted.org/packages/14/b8/25e00029257da602ee187dfa3311041437a85c0e7f0c9af25801c002b2d6/ftp-proxy-0.0.11.tar.gz" } ], "0.0.12": [ { "comment_text": "", "digests": { "md5": "9f397378a0063c267f1413e3024ade08", "sha256": "1ee431bcecccdc7957643c176c1c95967d3fb7de72381873a12ae6e010b0a597" }, "downloads": -1, "filename": "ftp_proxy-0.0.12-py3-none-any.whl", "has_sig": false, "md5_digest": "9f397378a0063c267f1413e3024ade08", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7240, "upload_time": "2019-05-20T07:10:41", "url": "https://files.pythonhosted.org/packages/c4/23/d3eeff33a5e018a6b1ef23a871e0e1ccf0d39a9312806caf1104a6a26e77/ftp_proxy-0.0.12-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fb667aeef5e1bd9c2c10a45d5f9ad730", "sha256": "41fa99d4b1dc9f4ad758f1a6794b948641afab9d3d2f2e207db941badee53763" }, "downloads": -1, "filename": "ftp-proxy-0.0.12.tar.gz", "has_sig": false, "md5_digest": "fb667aeef5e1bd9c2c10a45d5f9ad730", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7732, "upload_time": "2019-05-20T07:10:42", "url": "https://files.pythonhosted.org/packages/23/c2/a8b2fbf68c412a84849c1bf399bd3aa7e947a9b046f0c776facfd21f596a/ftp-proxy-0.0.12.tar.gz" } ], "0.0.13": [ { "comment_text": "", "digests": { "md5": "424902002f73dcd5e83badd42375c16e", "sha256": "0f2bd33f6a8114337154f416713a823f084cbe6b960527da6051d36d3fc59477" }, "downloads": -1, "filename": "ftp_proxy-0.0.13-py3-none-any.whl", "has_sig": false, "md5_digest": "424902002f73dcd5e83badd42375c16e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7251, "upload_time": "2019-05-20T07:21:08", "url": "https://files.pythonhosted.org/packages/d6/f6/1240fa8d6da8cbcafc119050b9987ca4c4fe6d58b00197f21b802cd63db3/ftp_proxy-0.0.13-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3b459ab76d422aafbc7f73b1ba716e69", "sha256": "5e7469d925ac44a02b3c61ab97825726949bcf13a7b6f80de94f534a43bc516a" }, "downloads": -1, "filename": "ftp-proxy-0.0.13.tar.gz", "has_sig": false, "md5_digest": "3b459ab76d422aafbc7f73b1ba716e69", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7738, "upload_time": "2019-05-20T07:21:10", "url": "https://files.pythonhosted.org/packages/bf/f1/d468c3a03e9c1da4a7ae616a89fdf9a05a8d2db26e087d320da5f24c0e3b/ftp-proxy-0.0.13.tar.gz" } ], "0.0.14": [ { "comment_text": "", "digests": { "md5": "fad5bcc768c75845168cde23064d2fcc", "sha256": "fd4db503896c6073b8309fdebb1a96a7d0a6a38ec580b35998cbca852e323020" }, "downloads": -1, "filename": "ftp_proxy-0.0.14-py3-none-any.whl", "has_sig": false, "md5_digest": "fad5bcc768c75845168cde23064d2fcc", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7300, "upload_time": "2019-05-20T07:45:07", "url": "https://files.pythonhosted.org/packages/c1/10/c50bd560c1d7053869b22ebb8a6ccb3fed4a44e8aaeb6b18c0d45b3619c3/ftp_proxy-0.0.14-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cb5fe6e563687417d375ec7b1f510a11", "sha256": "f444cbc554614296f6e1cbbac112c0a82bb9f8a377833ba11ad2fec9eb231b4e" }, "downloads": -1, "filename": "ftp-proxy-0.0.14.tar.gz", "has_sig": false, "md5_digest": "cb5fe6e563687417d375ec7b1f510a11", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7797, "upload_time": "2019-05-20T07:45:08", "url": "https://files.pythonhosted.org/packages/f4/c6/e7381d0375290d91deec370fb5667e2b28b0b422af075e88c74602b0a64a/ftp-proxy-0.0.14.tar.gz" } ], "0.0.15": [ { "comment_text": "", "digests": { "md5": "1053a3f2c0da88119afbed1cc06f64ff", "sha256": "4e3333fd58267e31999b4058ccbab797285a3a29410281e02bbc160b170cbca0" }, "downloads": -1, "filename": "ftp_proxy-0.0.15-py3-none-any.whl", "has_sig": false, "md5_digest": "1053a3f2c0da88119afbed1cc06f64ff", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7323, "upload_time": "2019-05-20T08:08:50", "url": "https://files.pythonhosted.org/packages/12/85/9abbe05357b5976b654186772d2990a1176a432b25978d77ef9b26e8d711/ftp_proxy-0.0.15-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bded2917b130e1f24a276d3164caff9e", "sha256": "ded5b504072fde27c622958d62a24b53be335bd6278920ac1a27b1e31e37191c" }, "downloads": -1, "filename": "ftp-proxy-0.0.15.tar.gz", "has_sig": false, "md5_digest": "bded2917b130e1f24a276d3164caff9e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7814, "upload_time": "2019-05-20T08:08:52", "url": "https://files.pythonhosted.org/packages/12/c3/b9839eb25b1fab7b12a2b18cbaa9321d613787a51a9d6e3f00996d62861f/ftp-proxy-0.0.15.tar.gz" } ], "0.0.16": [ { "comment_text": "", "digests": { "md5": "78f38af06d3207e9975674c36cdedc0d", "sha256": "665f8fdf74c74f378c4c04edd4f8ef90194478a591de97dfb22f6347a39bdaac" }, "downloads": -1, "filename": "ftp_proxy-0.0.16-py3-none-any.whl", "has_sig": false, "md5_digest": "78f38af06d3207e9975674c36cdedc0d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7137, "upload_time": "2019-05-20T08:25:06", "url": "https://files.pythonhosted.org/packages/07/2c/1cde2346647b42490c2f129028fb993cf13bbd75d71b57b6f39257bf0d65/ftp_proxy-0.0.16-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0dc53d60b791869b94a3cbd355f69cb0", "sha256": "f741b37761ec27c79e3e46907f2d61d8433b421c3ad7e48e7cb627b4907ca04b" }, "downloads": -1, "filename": "ftp-proxy-0.0.16.tar.gz", "has_sig": false, "md5_digest": "0dc53d60b791869b94a3cbd355f69cb0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7643, "upload_time": "2019-05-20T08:25:08", "url": "https://files.pythonhosted.org/packages/3a/15/dd64a82a15177e5e2ce5fc190304e23ac8798e21748307e6785fa38492b3/ftp-proxy-0.0.16.tar.gz" } ], "0.0.17": [ { "comment_text": "", "digests": { "md5": "fca5a37416b89d9e756b393261e69c7b", "sha256": "84d229aac06594d8bb527ac827dec75149e1909409d51d426436b15f547c5b33" }, "downloads": -1, "filename": "ftp_proxy-0.0.17-py3-none-any.whl", "has_sig": false, "md5_digest": "fca5a37416b89d9e756b393261e69c7b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7139, "upload_time": "2019-05-20T08:40:47", "url": "https://files.pythonhosted.org/packages/09/cb/ae4928a29e220500cfe4d0401aa06c8f49b230ef7c745463e032ea20662e/ftp_proxy-0.0.17-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d7a868c8b668d20ad5c5fa77f1be26a2", "sha256": "91881070699726ff467cefd5d8c24c2c3fd841e493e60dd0cb33db3a4798261d" }, "downloads": -1, "filename": "ftp-proxy-0.0.17.tar.gz", "has_sig": false, "md5_digest": "d7a868c8b668d20ad5c5fa77f1be26a2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7652, "upload_time": "2019-05-20T08:40:48", "url": "https://files.pythonhosted.org/packages/d0/6d/6c4dffa4c19fcd498f303cc2038fc622f40d1fee01fca58ba665c578c016/ftp-proxy-0.0.17.tar.gz" } ], "0.0.18": [ { "comment_text": "", "digests": { "md5": "ef8763d98444340c189a65263ca55a05", "sha256": "05bf4974029e428ba8a027fc223026f725c51020397e0b6414bcf24dd02d14a9" }, "downloads": -1, "filename": "ftp_proxy-0.0.18-py3-none-any.whl", "has_sig": false, "md5_digest": "ef8763d98444340c189a65263ca55a05", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7138, "upload_time": "2019-05-20T08:51:52", "url": "https://files.pythonhosted.org/packages/93/68/5e82d8f337b6f4f2ac7312cb05bf289cedada9ec7a7488f25d3f0f0aeea5/ftp_proxy-0.0.18-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e159c6fb40a496840e8108789e3a8254", "sha256": "c196b7f184033bb0294b67a7c3abc78341881e862415412e99687637d1859933" }, "downloads": -1, "filename": "ftp-proxy-0.0.18.tar.gz", "has_sig": false, "md5_digest": "e159c6fb40a496840e8108789e3a8254", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7650, "upload_time": "2019-05-20T08:51:53", "url": "https://files.pythonhosted.org/packages/aa/9d/9c094edcda555e786f82b16cd143afdc398ad089215e8da468aa0f4dd4d2/ftp-proxy-0.0.18.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "4a83eae0f292a89d5d6f14cf2ffd8e2e", "sha256": "983c08f545a9414fa2039e91fb7304705bde268e0f0a7b60a96d3b1452e0a8db" }, "downloads": -1, "filename": "ftp_proxy-0.0.5-py3-none-any.whl", "has_sig": false, "md5_digest": "4a83eae0f292a89d5d6f14cf2ffd8e2e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6348, "upload_time": "2018-05-16T15:34:43", "url": "https://files.pythonhosted.org/packages/d6/63/8a0247509cde16d7677e5a4daa7d42d22c96a8c218f07129dcff7a1a7941/ftp_proxy-0.0.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6a86aa371e0c86084e1f7061096d9b61", "sha256": "9cba3db6ffbf305b2bb659430c9057517883a6d78586d780743ea2b5c2b70e9c" }, "downloads": -1, "filename": "ftp-proxy-0.0.5.tar.gz", "has_sig": false, "md5_digest": "6a86aa371e0c86084e1f7061096d9b61", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6478, "upload_time": "2018-05-16T15:34:44", "url": "https://files.pythonhosted.org/packages/62/fd/15e5cfb041936c7dc085f3f1548cedaba938fa93b04e6282f363e5b19c6b/ftp-proxy-0.0.5.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "6cf6af4c09fe97d48849f5d1b74227f7", "sha256": "ce7c586e35d44c9dff2d9d4f9969a6259744c412cc14e6a417ab20b2cfcfa46e" }, "downloads": -1, "filename": "ftp_proxy-0.0.6-py3-none-any.whl", "has_sig": false, "md5_digest": "6cf6af4c09fe97d48849f5d1b74227f7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6514, "upload_time": "2018-05-18T07:43:33", "url": "https://files.pythonhosted.org/packages/28/08/e5db902afeace5a46b702740528d28f788ebbca0cfeb649bf6f58d953988/ftp_proxy-0.0.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3cbef02b0ec5f917e8f7fd210baff83f", "sha256": "0e8ffe2d2b1873cf675b8ca06cf9e49879266d2e29eef4628fc8b3c774c01702" }, "downloads": -1, "filename": "ftp-proxy-0.0.6.tar.gz", "has_sig": false, "md5_digest": "3cbef02b0ec5f917e8f7fd210baff83f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6620, "upload_time": "2018-05-18T07:43:34", "url": "https://files.pythonhosted.org/packages/a2/d3/5f19842fbc2f5e571e8d0148e974741a9e76f443c08f3839791df267f0ce/ftp-proxy-0.0.6.tar.gz" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "e4d61ce8a4c73765809036918c47ee89", "sha256": "f5166bfbfef3377e6185730f703c3905e3130b07447a62e903a003f44d2ca447" }, "downloads": -1, "filename": "ftp_proxy-0.0.7-py3-none-any.whl", "has_sig": false, "md5_digest": "e4d61ce8a4c73765809036918c47ee89", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8296, "upload_time": "2018-05-22T14:44:47", "url": "https://files.pythonhosted.org/packages/9f/1e/4bf9d39762e4d47741e248efa9ae33e7bbd28d9f093bd6c574db356fe202/ftp_proxy-0.0.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a4b0a171d2212f333d16f4a0d1a1df2f", "sha256": "2933945eadb75e04e23f41afba7f47b40b85c96d2d10a0882c273a691ae6b94c" }, "downloads": -1, "filename": "ftp-proxy-0.0.7.tar.gz", "has_sig": false, "md5_digest": "a4b0a171d2212f333d16f4a0d1a1df2f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7511, "upload_time": "2018-05-22T14:44:49", "url": "https://files.pythonhosted.org/packages/0d/73/f00e37288ac052bb7a01b1f72bbaefc9c81e6e732bf0833ae9779b68455c/ftp-proxy-0.0.7.tar.gz" } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "e15d97ecf463a0993d62b5f9a3d79796", "sha256": "00d32ffbfe6d4e62960d301a12971615654cfcc1c0fa0b669fdb5ac4f7500f3c" }, "downloads": -1, "filename": "ftp_proxy-0.0.8-py3-none-any.whl", "has_sig": false, "md5_digest": "e15d97ecf463a0993d62b5f9a3d79796", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8306, "upload_time": "2018-05-23T07:09:19", "url": "https://files.pythonhosted.org/packages/7b/00/19feab8b31ebb745090e0f0a6899f904ae7920c28075e42ae23ef6fac8cf/ftp_proxy-0.0.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a2b0e4ed4076b2e92e5dd8061d9cabc5", "sha256": "611be7653d2f082c18539af2b9d9ad63e2b383ce45becb87e323e979a8ebd786" }, "downloads": -1, "filename": "ftp-proxy-0.0.8.tar.gz", "has_sig": false, "md5_digest": "a2b0e4ed4076b2e92e5dd8061d9cabc5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7541, "upload_time": "2018-05-23T07:09:20", "url": "https://files.pythonhosted.org/packages/a2/e8/eb66c8347a9ea0edb506cbbb9b4ad43d87308d113976b52e60607ba3ff00/ftp-proxy-0.0.8.tar.gz" } ], "0.0.9": [ { "comment_text": "", "digests": { "md5": "eb05f2c6c90a6664dd3e20c0fb51562c", "sha256": "6bea522cd238d5ca0d73a9f7706d8a35d034442a8c4647625602cb180adcd191" }, "downloads": -1, "filename": "ftp_proxy-0.0.9-py3-none-any.whl", "has_sig": false, "md5_digest": "eb05f2c6c90a6664dd3e20c0fb51562c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8307, "upload_time": "2018-08-01T15:26:32", "url": "https://files.pythonhosted.org/packages/b8/66/e73389c18c7ad26a81ef02dd950aafafefc2d1545a835f3ff88a4a75ed5e/ftp_proxy-0.0.9-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c4d075c36e78e9f0943bf5c96770e200", "sha256": "e19f5365751763c80ed139a7bfec7fe334e914cef7ecf0d5cd4ad125271773ef" }, "downloads": -1, "filename": "ftp-proxy-0.0.9.tar.gz", "has_sig": false, "md5_digest": "c4d075c36e78e9f0943bf5c96770e200", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7541, "upload_time": "2018-08-01T15:26:33", "url": "https://files.pythonhosted.org/packages/c1/75/4bd413d38b4b8fdbafc1fa2f702c486abd2fa76a4e816c525fa16c275b0c/ftp-proxy-0.0.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "ef8763d98444340c189a65263ca55a05", "sha256": "05bf4974029e428ba8a027fc223026f725c51020397e0b6414bcf24dd02d14a9" }, "downloads": -1, "filename": "ftp_proxy-0.0.18-py3-none-any.whl", "has_sig": false, "md5_digest": "ef8763d98444340c189a65263ca55a05", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7138, "upload_time": "2019-05-20T08:51:52", "url": "https://files.pythonhosted.org/packages/93/68/5e82d8f337b6f4f2ac7312cb05bf289cedada9ec7a7488f25d3f0f0aeea5/ftp_proxy-0.0.18-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e159c6fb40a496840e8108789e3a8254", "sha256": "c196b7f184033bb0294b67a7c3abc78341881e862415412e99687637d1859933" }, "downloads": -1, "filename": "ftp-proxy-0.0.18.tar.gz", "has_sig": false, "md5_digest": "e159c6fb40a496840e8108789e3a8254", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7650, "upload_time": "2019-05-20T08:51:53", "url": "https://files.pythonhosted.org/packages/aa/9d/9c094edcda555e786f82b16cd143afdc398ad089215e8da468aa0f4dd4d2/ftp-proxy-0.0.18.tar.gz" } ] }