This release is a pre-release and may not be stable for production use.
csv2http
CLI tool and library for making a series of JSON or form-encoded HTTP requests based on a CSV file input.
Quick start
Install
pip install csv2http
Or with pipx (recommended)
pipx install csv2http
Check CLI usage
❯ csv2http --help
usage: csv2http [-h] [-c CONCURRENCY] [--method {POST,PATCH,PUT}] [-a AUTH] [-H [HEADER ...]] [-d] [-n] [-t TIMEOUT] file url
HTTP request for every row of a CSV file - v0.0.3a1
positional arguments:
file payload csv file
url URL destination - called with `http` if scheme is absent
options:
-h, --help show this help message and exit
-c CONCURRENCY, --concurrency CONCURRENCY
Maximum number of concurrent requests (default: 25)
--method {POST,PATCH,PUT}
HTTP method/verb (default: POST)
-a AUTH, --auth AUTH Basic Authentication enter <USERNAME>:<PASSWORD>. If password is blank you will be prompted for input
-H [HEADER ...], --header [HEADER ...]
Header `key:value` pairs
-d, --form-data Send payload as form encoded data instead of JSON (default: false)
-n, --no-save Do not save results to log file (default: false)
-t TIMEOUT, --timeout TIMEOUT
Connection timeout of the request in seconds (default: 5)
Mockbin Example
Make POST calls to http://mockbin.org from a local csv file.
First setup a new bin, using httpie, curl or the web ui and get a bin id.
❯ http POST mockbin.com/bin/create status:=201 statusText=Created httpVersion=HTTP/1.1 headers:='[]' cookies:='[]' 'content[mimeType]'=application/json --body
"9e95289e-d048-4515-9a61-07f2c74810f5"
Create your my_file.csv and pass it to csv2http.
Use the returned bin id from before.
❯ csv2http my_file.csv mockbin.org/bin/9e95289e-d048-4515-9a61-07f2c74810f5 --concurrency 3
POST http://mockbin.org/bin/mockbin.org/bin/9e95289e-d048-4515-9a61-07f2c74810f5
status codes - {200: 3}
status codes - {200: 3}
status codes - {200: 3}
status codes - {200: 1}
Check the bin log from. https://mockbin.org/bin/9e95289e-d048-4515-9a61-07f2c74810f5/log
Set Auth and Headers
Header key, value pairs can be set with the -H or -header flag.
Key value pairs should be separated with either a : or =.
csv2http my_file.csv httpbin.org/post -H user-agent:csv2http-cli x-custom-header=foobar
To provide basic auth pass a username and password with -a or --auth.
If the password is omitted you will be prompted to provide it.
--auth my_username:my_password
--auth my_username
Roadmap
- As Library - Alpha
- parse csv as dictionary/json - Alpha
- accept mutator function - Alpha
- HTTP POST request with json from csv - Alpha
- limit concurrency - Alpha
- non-blocking file IO - ???
- hooks for response results - Beta
- mkdoc docs - Beta
- As CLI - Beta
- argparse - Alpha
- write results to logfile - Beta
- progress bar - ???
- use dedicated CLI library with pretty colors (typer, rich etc.) - Beta
- Nested fields - V1
- Complete Docs - V1
-
create_mockbin.csvandexample.csvto use in quickstart - Beta - examples for using as library
-
- GH Actions CI (lint, test, etc.)
- GH Actions CD (publish to pypi)
Metadata
Release files for csv2http 0.0.3a1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| csv2http-0.0.3a1.tar.gz | 16.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| csv2http-0.0.3a1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 27.0 kB
Release files / csv2http-0.0.3a1.tar.gz
| Download URL | csv2http-0.0.3a1.tar.gz |
|---|---|
| Size | 16.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b109cf67cfd64a5732ebd557fb6347d69a4001910b60a8bd0acfceee04f3f1ce
|
|
BLAKE2b-256 checksum How to use checksums |
a5e2a0b191aaccd4e6ce9fbb9b2109127525cbc5a941d8474a152e46935792e2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.1.13 CPython/3.10.4 Darwin/21.5.0
|
Release files / csv2http-0.0.3a1-py3-none-any.whl
| Download URL | csv2http-0.0.3a1-py3-none-any.whl |
|---|---|
| Size | 10.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0faf6983e2f66e762ad8d4449872e687c74d51a5ec759f09ed8c853aaa3feaa5
|
|
BLAKE2b-256 checksum How to use checksums |
643102210bb3bec8b23f548d43dfbdcbd26498fb62215b750e30192f9560cf4f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.1.13 CPython/3.10.4 Darwin/21.5.0
|