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 | Provenance | Actions |
|---|---|---|---|---|
| csv2http-0.0.3a1.tar.gz | 16.9 kB | Without provenance | Details for csv2http-0.0.3a1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| csv2http-0.0.3a1-py3-none-any.whl | Python 3 | none | any | Details for csv2http-0.0.3a1-py3-none-any.whl |
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
|
Security for csv2http 0.0.3a1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.