{ "info": { "author": "Yuanle Song", "author_email": "sylecn@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: System Administrators", "License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)", "Operating System :: POSIX :: Linux", "Programming Language :: Haskell", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Topic :: System :: Networking" ], "description": "rd-api - reliable download server\n========================================\n\n.. version\n.. image:: https://img.shields.io/pypi/v/rd-api.svg\n :target: https://pypi.python.org/pypi/rd-api/\n\n.. license\n.. image:: https://img.shields.io/pypi/l/rd-api.svg\n :target: https://pypi.python.org/pypi/rd-api/\n\n.. image:: https://img.shields.io/pypi/wheel/rd-api.svg\n :target: https://pypi.python.org/pypi/rd-api/\n\nrd-api is an HTTP file server that provides static file hosting and reliable\ndownload api for `rd client`_.\n\nrd-api serves files under web-root. You can use it like ``python3 -m\nhttp.server``.\n\nIn addition, if rd command line tool is used to do the download, it will\ndownload in a reliable way by downloading in 2MiB blocks and verify checksum\nfor each block.\n\n.. _rd client: https://pypi.org/project/rd/\n\nInstallation\n------------\n\nTo install this package:\n\n.. code-block:: bash\n\n $ sudo apt install -y redis-server # redis is used to cached block sha1sum\n $ pip install --user rd-api\n $ rd-api --help\n $ ~/.local/bin/rd-api --help # if ~/.local/bin/ is not in PATH\n\nBaisc Usage\n------------\n\nserver side:\n\n.. code-block:: bash\n\n $ ls\n bigfile1 bigfile2\n $ rd-api --host 0.0.0.0 --port 8082\n\nclient side (requires `rd client`_):\n\n.. code-block:: bash\n\n $ rd http://server-ip:8082/bigfile1\n\nDocumentation\n-------------\n\nReliable download is implemented this way:\n\n- User uses rd client to request a resource to download.\n- rd client requests resource block metadata via the /rd/ api. Block metadata\n contains block count, block id, block byte offset, block content sha1sum.\n- rd-api calculates and serves block metadata to rd client incrementally.\n Block metadata is cached in redis after calculation.\n- rd client fetches block using HTTP/1.1 Range header and verifies sha1sum\n incrementally. When all blocks are downloaded and verified, combine blocks\n to get the final resource.\n- rd client will retry on http errors and sha1sum verification failures.\n- rd client supports continuing a partial download. You can press Ctrl-C to\n stop download anytime, and continue later by running the same command again.\n\nReliable download is written in Haskell, binary is distributed on PyPI for\neasy installation on linux system. Reliable download only runs in linux.\n\nChangeLog\n---------\n\n* v1.1.0.0 2018-05-10\n\n - feature: support passing arguments using env variables, for cli arg --redis-host, the env variable will be REDIS_HOST.\n - bugfix: fix cli argument parsing for string types\n\n* v1.0.0.3 2018-05-09\n\n - update installation doc, rd-api requires redis server\n\n* v1.0.0.2 2018-05-09\n\n - init release.\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://pypi.python.org/pypi/rd-api/", "keywords": "", "license": "GPLv3+", "maintainer": "Yuanle Song", "maintainer_email": "sylecn@gmail.com", "name": "rd-api", "package_url": "https://pypi.org/project/rd-api/", "platform": "", "project_url": "https://pypi.org/project/rd-api/", "project_urls": { "Homepage": "https://pypi.python.org/pypi/rd-api/" }, "release_url": "https://pypi.org/project/rd-api/1.1.0.0/", "requires_dist": null, "requires_python": "", "summary": "reliable-download server", "version": "1.1.0.0" }, "last_serial": 3850595, "releases": { "1.0.0.2": [ { "comment_text": "", "digests": { "md5": "be575f7b652baceac3ea7f0570df5448", "sha256": "3203fdbc8ba309d80f7cc7124edc1584d1961dc6b2ee93257d8d0ea33c404ea1" }, "downloads": -1, "filename": "rd_api-1.0.0.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "be575f7b652baceac3ea7f0570df5448", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 4100682, "upload_time": "2018-05-09T11:37:59", "url": "https://files.pythonhosted.org/packages/c9/f6/ef9428492a5d07d3f811eb799172c89495326fa0d9f2a37718fe3acf505e/rd_api-1.0.0.2-py2.py3-none-any.whl" } ], "1.0.0.3": [ { "comment_text": "", "digests": { "md5": "af4d57ea24e95fe65c32172b847575a0", "sha256": "8552da568060ac8583bf58ae3f2c0775dba801e5ef07d9b5d7ca4b7f1fffd90e" }, "downloads": -1, "filename": "rd_api-1.0.0.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "af4d57ea24e95fe65c32172b847575a0", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 4101079, "upload_time": "2018-05-09T13:27:36", "url": "https://files.pythonhosted.org/packages/a7/70/c9be392a5306ca6ac5b631dbf1e3fcc4386dcfa11d2c0331307c6e9efbdc/rd_api-1.0.0.3-py2.py3-none-any.whl" } ], "1.1.0.0": [ { "comment_text": "", "digests": { "md5": "8c4ef5a4cbd9c46e0ea1ec4fc0c98e6a", "sha256": "7aba962fe0f891339eaba5f719c0c29ab857dc3b605571aab10bb6d388e23319" }, "downloads": -1, "filename": "rd_api-1.1.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "8c4ef5a4cbd9c46e0ea1ec4fc0c98e6a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 4103063, "upload_time": "2018-05-10T14:20:33", "url": "https://files.pythonhosted.org/packages/1c/b0/a9d212dc5af18803eb12e76b8a3ed47a9c71b3caba0d286ad76c3c7db98c/rd_api-1.1.0.0-py2.py3-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "8c4ef5a4cbd9c46e0ea1ec4fc0c98e6a", "sha256": "7aba962fe0f891339eaba5f719c0c29ab857dc3b605571aab10bb6d388e23319" }, "downloads": -1, "filename": "rd_api-1.1.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "8c4ef5a4cbd9c46e0ea1ec4fc0c98e6a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 4103063, "upload_time": "2018-05-10T14:20:33", "url": "https://files.pythonhosted.org/packages/1c/b0/a9d212dc5af18803eb12e76b8a3ed47a9c71b3caba0d286ad76c3c7db98c/rd_api-1.1.0.0-py2.py3-none-any.whl" } ] }