{
"info": {
"author": "reorx",
"author_email": "novoreorx@gmail.com",
"bugtrack_url": null,
"classifiers": [],
"description": "# httpstat\n\n\n\nhttpstat visualizes `curl(1)` statistics in a way of beauty and clarity.\n\nIt is a **single file\ud83c\udf1f** Python script that has **no dependency\ud83d\udc4f** and is compatible with **Python 3\ud83c\udf7b**.\n\n\n## Installation\n\nThere are three ways to get `httpstat`:\n\n- Download the script directly: `wget https://raw.githubusercontent.com/reorx/httpstat/master/httpstat.py`\n\n- Through pip: `pip install httpstat`\n\n- Through homebrew (macOS only): `brew install httpstat`\n\n\n## Usage\n\nSimply:\n\n```bash\npython httpstat.py httpbin.org/get\n```\n\nIf installed through pip or brew, you can use `httpstat` as a command:\n\n```bash\nhttpstat httpbin.org/get\n```\n\n### cURL Options\n\nBecause `httpstat` is a wrapper of cURL, you can pass any cURL supported option after the url (except for `-w`, `-D`, `-o`, `-s`, `-S` which are already used by `httpstat`):\n\n```bash\nhttpstat httpbin.org/post -X POST --data-urlencode \"a=b\" -v\n```\n\n### Environment Variables\n\n`httpstat` has a bunch of env vars to control its behavior. Here are some usage demos, you can also run `httpstat --help` to see full explanation.\n\n\nHTTPSTAT_SHOW_BODY
\n\nSet to `true` to show resposne body in the output, note that body length\nis limited to 1023 bytes, will be truncated if exceeds. Default is `false`.\n \n\n\n\nHTTPSTAT_SHOW_IP
\n\nBy default httpstat shows remote and local IP/port address.\nSet to `false` to disable this feature. Default is `true`.\n \n\n\n\nHTTPSTAT_SHOW_SPEED
\n\nSet to `true` to show download and upload speed. Default is `false`.\n\n```bash\nHTTPSTAT_SHOW_SPEED=true httpstat http://cachefly.cachefly.net/10mb.test\n\n...\nspeed_download: 3193.3 KiB/s, speed_upload: 0.0 KiB/s\n```\n \n\n\n\nHTTPSTAT_SAVE_BODY
\n\nBy default httpstat stores body in a tmp file,\nset to `false` to disable this feature. Default is `true`\n \n\n\n\nHTTPSTAT_CURL_BIN
\n\nIndicate the cURL bin path to use. Default is `curl` from current shell $PATH.\n\nThis exampe uses brew installed cURL to make HTTP2 request:\n\n```bash\nHTTPSTAT_CURL_BIN=/usr/local/Cellar/curl/7.50.3/bin/curl httpstat https://http2.akamai.com/ --http2\n\nHTTP/2 200\n...\n```\n\n> cURL must be compiled with nghttp2 to enable http2 feature\n> ([#12](https://github.com/reorx/httpstat/issues/12)).\n \n\n\n\nHTTPSTAT_DEBUG
\n\nSet to `true` to see debugging logs. Default is `false`\n \n\n\n## Related Projects\n\nHere are some implementations in various languages:\n\n- Bash: [b4b4r07/httpstat](https://github.com/b4b4r07/httpstat)\n\n This is what exactly I want to do at the very beginning, but gave up due to not confident in my bash skill, good job!\n\n- Node: [yosuke-furukawa/httpstat](https://github.com/yosuke-furukawa/httpstat)\n\n [b4b4r07](https://twitter.com/b4b4r07) mentioned this in his [article](http://www.tellme.tokyo/entry/2016/09/25/213810), could be used as a HTTP client also.\n\n- Go: [davecheney/httpstat](https://github.com/davecheney/httpstat)\n\n I'm practicing Go recently, it's happy to read and learn from this one.\n\n- Go (library): [tcnksm/go-httpstat](https://github.com/tcnksm/go-httpstat)\n\n Other than being a cli tool, this project is used as library to help debugging latency of HTTP requests in Go code, very thoughtful and useful, see more in this [article](https://medium.com/@deeeet/trancing-http-request-latency-in-golang-65b2463f548c#.mm1u8kfnu)\n\n- PHP: [talhasch/php-httpstat](https://github.com/talhasch/php-httpstat)\n\n The PHP implementation by @talhasch\n\nSome code blocks in `httpstat` are copied from other projects of mine, have a look:\n\n- [reorx/python-terminal-color](https://github.com/reorx/python-terminal-color) Drop-in single file library for printing terminal color.\n\n- [reorx/getenv](https://github.com/reorx/getenv) Environment variable definition with type.",
"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/reorx/httpstat",
"keywords": null,
"license": "License :: OSI Approved :: MIT License",
"maintainer": null,
"maintainer_email": null,
"name": "httpstat",
"package_url": "https://pypi.org/project/httpstat/",
"platform": "UNKNOWN",
"project_url": "https://pypi.org/project/httpstat/",
"project_urls": {
"Download": "UNKNOWN",
"Homepage": "https://github.com/reorx/httpstat"
},
"release_url": "https://pypi.org/project/httpstat/1.2.1/",
"requires_dist": null,
"requires_python": null,
"summary": "curl statistics made simple",
"version": "1.2.1"
},
"last_serial": 2389355,
"releases": {
"1.0.0": [
{
"comment_text": "",
"digests": {
"md5": "595beec7d767ee1d7dc2bea5c6cc507a",
"sha256": "4af07d5f913730ded3472bc77717ee1764a48d217dfa42842f149db21608a67e"
},
"downloads": -1,
"filename": "httpstat-1.0.0-py2-none-any.whl",
"has_sig": false,
"md5_digest": "595beec7d767ee1d7dc2bea5c6cc507a",
"packagetype": "bdist_wheel",
"python_version": "2.7",
"requires_python": null,
"size": 5342,
"upload_time": "2016-09-01T11:43:53",
"url": "https://files.pythonhosted.org/packages/27/02/d21cbf9835759dda2eaba2b853dfdf3302991da0d756cffaca648b747750/httpstat-1.0.0-py2-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "873bb68efb06417b28ba634b3f36212f",
"sha256": "531c13e739a4ddeaa7b47a500fe5cdd40d6cc7544a87499934b786ba9876e188"
},
"downloads": -1,
"filename": "httpstat-1.0.0.tar.gz",
"has_sig": false,
"md5_digest": "873bb68efb06417b28ba634b3f36212f",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 3612,
"upload_time": "2016-09-01T11:43:50",
"url": "https://files.pythonhosted.org/packages/09/a7/c71bc433bd8d6a77ff45b10197cd78e7abfdc7bf356f639eba141553f569/httpstat-1.0.0.tar.gz"
}
],
"1.1.0": [
{
"comment_text": "",
"digests": {
"md5": "1b56992860af01e42640a0f2951d0cec",
"sha256": "8b37456c26690307369542ca80f8a3378c49f1426428ff8b0717635c23d2d339"
},
"downloads": -1,
"filename": "httpstat-1.1.0-py2-none-any.whl",
"has_sig": false,
"md5_digest": "1b56992860af01e42640a0f2951d0cec",
"packagetype": "bdist_wheel",
"python_version": "2.7",
"requires_python": null,
"size": 5714,
"upload_time": "2016-09-01T12:20:33",
"url": "https://files.pythonhosted.org/packages/89/0f/60c0ebe6d7ddddfe1d3ab715a4742027dbdd0f3e7149d31bf66a935cdf81/httpstat-1.1.0-py2-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "53e547216745e22a29bcfdb1cdd1067f",
"sha256": "6d6670ca68ce1d83a0c3d985a5b29aa66424ffbd88fea12712fc687c312196bc"
},
"downloads": -1,
"filename": "httpstat-1.1.0.tar.gz",
"has_sig": false,
"md5_digest": "53e547216745e22a29bcfdb1cdd1067f",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 3929,
"upload_time": "2016-09-01T12:20:29",
"url": "https://files.pythonhosted.org/packages/7f/54/baa251880572e038be783b18fdc54a97dda9d151cef628a36662cc3cb488/httpstat-1.1.0.tar.gz"
}
],
"1.1.1": [
{
"comment_text": "",
"digests": {
"md5": "d37a1a69b21daf862cfe377c7b923977",
"sha256": "3a7240470d982fc74984f6b60e9f006fa8f01ded2edc160ce3d36133d3a2be54"
},
"downloads": -1,
"filename": "httpstat-1.1.1-py2-none-any.whl",
"has_sig": false,
"md5_digest": "d37a1a69b21daf862cfe377c7b923977",
"packagetype": "bdist_wheel",
"python_version": "2.7",
"requires_python": null,
"size": 5711,
"upload_time": "2016-09-01T12:27:37",
"url": "https://files.pythonhosted.org/packages/5a/e9/58a2f89616a2c88a60267a745a196dda6f2d289c93b8d1dd4ed6a3e24172/httpstat-1.1.1-py2-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "54d8d47f1a0060d7dd4e93848d78a999",
"sha256": "3d420e5228a8b93eb0841452efd28c026ce19ee00fd98698f5a87a5d939c3c5d"
},
"downloads": -1,
"filename": "httpstat-1.1.1.tar.gz",
"has_sig": false,
"md5_digest": "54d8d47f1a0060d7dd4e93848d78a999",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 3928,
"upload_time": "2016-09-01T12:27:33",
"url": "https://files.pythonhosted.org/packages/2a/e3/da1d1faf6050ff7664f80aa3dd942cfe732e90d5d126b6037a52f323819c/httpstat-1.1.1.tar.gz"
}
],
"1.1.2": [
{
"comment_text": "",
"digests": {
"md5": "e2ff66d7630b099d5ff1674c39f48a70",
"sha256": "be04c904f65f5fb8e104f2ce9c4358a3655950b1e4565b002d0f5761a66480b0"
},
"downloads": -1,
"filename": "httpstat-1.1.2-py2-none-any.whl",
"has_sig": false,
"md5_digest": "e2ff66d7630b099d5ff1674c39f48a70",
"packagetype": "bdist_wheel",
"python_version": "2.7",
"requires_python": null,
"size": 5756,
"upload_time": "2016-09-05T06:53:37",
"url": "https://files.pythonhosted.org/packages/43/a6/bbcdf39f411ddae8345f1c5dbb2add0d0af535b3e3c27d54f004bdc0d28b/httpstat-1.1.2-py2-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "77e24184cb1349ce8ea20011c777986a",
"sha256": "1295afdbcb485e2b29f7b264d9e320d0aeae8d4bd5bcd51f374b01c4e435d6c6"
},
"downloads": -1,
"filename": "httpstat-1.1.2.tar.gz",
"has_sig": false,
"md5_digest": "77e24184cb1349ce8ea20011c777986a",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 3975,
"upload_time": "2016-09-05T06:53:34",
"url": "https://files.pythonhosted.org/packages/b0/27/80bdb353de887ad501cde707858ad8202c852bdea848cb55dd764dd19c0b/httpstat-1.1.2.tar.gz"
}
],
"1.1.3": [
{
"comment_text": "",
"digests": {
"md5": "784b9ecd14caff5423eaced3edceb754",
"sha256": "b3953e5c840f2f8d55b31b18827933f781277037caf74354d96cdbcd09dbac41"
},
"downloads": -1,
"filename": "httpstat-1.1.3-py2-none-any.whl",
"has_sig": false,
"md5_digest": "784b9ecd14caff5423eaced3edceb754",
"packagetype": "bdist_wheel",
"python_version": "2.7",
"requires_python": null,
"size": 5800,
"upload_time": "2016-09-09T08:28:51",
"url": "https://files.pythonhosted.org/packages/11/ae/28e66bb90cbb92424ee80f9118c2dd8138b3c7607fc1dc9753865c57beca/httpstat-1.1.3-py2-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "b55297d4d62cda35c1b6abe0999b67e3",
"sha256": "c78e992fb31f893921ff9f4b127ff1d8d6896eb4a8f228b6b45d49ec3ab1f1c1"
},
"downloads": -1,
"filename": "httpstat-1.1.3.tar.gz",
"has_sig": false,
"md5_digest": "b55297d4d62cda35c1b6abe0999b67e3",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 4006,
"upload_time": "2016-09-09T08:28:47",
"url": "https://files.pythonhosted.org/packages/cf/5e/012d5622c44303056c65d2bf511fda17ce127963a530f93691efe0c68241/httpstat-1.1.3.tar.gz"
}
],
"1.2.0": [
{
"comment_text": "",
"digests": {
"md5": "cabc5a4fd61359779625ce8552e494e0",
"sha256": "817304dbb774fcb1143f472f4ea267d2b32f984260206bcb7e05f87504b722f0"
},
"downloads": -1,
"filename": "httpstat-1.2.0-py2-none-any.whl",
"has_sig": false,
"md5_digest": "cabc5a4fd61359779625ce8552e494e0",
"packagetype": "bdist_wheel",
"python_version": "2.7",
"requires_python": null,
"size": 6794,
"upload_time": "2016-09-27T09:46:11",
"url": "https://files.pythonhosted.org/packages/f1/01/9947c7f16f5ad6a93650f4cbf91233fc2b3932408ee4d638ef409b7e7262/httpstat-1.2.0-py2-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "1eb84bad5b835e3cc6e76a34681028bb",
"sha256": "67ad468f97731b744060d90222a734b21f2c89aea604be82747880542c898623"
},
"downloads": -1,
"filename": "httpstat-1.2.0.tar.gz",
"has_sig": false,
"md5_digest": "1eb84bad5b835e3cc6e76a34681028bb",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 4857,
"upload_time": "2016-09-27T09:46:08",
"url": "https://files.pythonhosted.org/packages/8d/c5/71ecf87a219a9bb7a21219fc40213809a405fbf60d37461f24b8023615e1/httpstat-1.2.0.tar.gz"
}
],
"1.2.1": [
{
"comment_text": "",
"digests": {
"md5": "8bbb3d33252d5a83687de4dd6d3ebc1b",
"sha256": "a8934a89e8a1d48bf5905f1fcb5f717bdfdca74d1644c8f3640be387398cbe8b"
},
"downloads": -1,
"filename": "httpstat-1.2.1-py2-none-any.whl",
"has_sig": false,
"md5_digest": "8bbb3d33252d5a83687de4dd6d3ebc1b",
"packagetype": "bdist_wheel",
"python_version": "2.7",
"requires_python": null,
"size": 9215,
"upload_time": "2016-10-09T12:58:27",
"url": "https://files.pythonhosted.org/packages/b5/a8/c925a81e0c2c6a32c867c648309aeb744077a5ee95e2f604c7fdcc422577/httpstat-1.2.1-py2-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "a951c8850a000454e7d7a8679000f680",
"sha256": "0ba63505a3dbc9c1b25eee86eea001caa6098e502200b5d441586d53a6151cb2"
},
"downloads": -1,
"filename": "httpstat-1.2.1.tar.gz",
"has_sig": false,
"md5_digest": "a951c8850a000454e7d7a8679000f680",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 6028,
"upload_time": "2016-10-09T12:58:24",
"url": "https://files.pythonhosted.org/packages/51/91/0af6ec6159b77607f70c21a9fee1024138115569c13f59cbb8e4c7e0d7b2/httpstat-1.2.1.tar.gz"
}
]
},
"urls": [
{
"comment_text": "",
"digests": {
"md5": "8bbb3d33252d5a83687de4dd6d3ebc1b",
"sha256": "a8934a89e8a1d48bf5905f1fcb5f717bdfdca74d1644c8f3640be387398cbe8b"
},
"downloads": -1,
"filename": "httpstat-1.2.1-py2-none-any.whl",
"has_sig": false,
"md5_digest": "8bbb3d33252d5a83687de4dd6d3ebc1b",
"packagetype": "bdist_wheel",
"python_version": "2.7",
"requires_python": null,
"size": 9215,
"upload_time": "2016-10-09T12:58:27",
"url": "https://files.pythonhosted.org/packages/b5/a8/c925a81e0c2c6a32c867c648309aeb744077a5ee95e2f604c7fdcc422577/httpstat-1.2.1-py2-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "a951c8850a000454e7d7a8679000f680",
"sha256": "0ba63505a3dbc9c1b25eee86eea001caa6098e502200b5d441586d53a6151cb2"
},
"downloads": -1,
"filename": "httpstat-1.2.1.tar.gz",
"has_sig": false,
"md5_digest": "a951c8850a000454e7d7a8679000f680",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 6028,
"upload_time": "2016-10-09T12:58:24",
"url": "https://files.pythonhosted.org/packages/51/91/0af6ec6159b77607f70c21a9fee1024138115569c13f59cbb8e4c7e0d7b2/httpstat-1.2.1.tar.gz"
}
]
}