CLI tool and library for making a series of JSON or form-encoded HTTP requests based on a CSV file input.
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)
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.io/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.io/bin/9e95289e-d048-4515-9a61-07f2c74810f5 --concurrency 3
POST http://mockbin.io/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
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
- 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.csv
andexample.csv
to use in quickstart - Beta - examples for using as library
-
- GH Actions CI (lint, test, etc.)
- GH Actions CD (publish to pypi)