Make http requests based on a CSV input file
Project description
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.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)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file csv2http-0.0.3a1.tar.gz
.
File metadata
- Download URL: csv2http-0.0.3a1.tar.gz
- Upload date:
- Size: 16.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.13 CPython/3.10.4 Darwin/21.5.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b109cf67cfd64a5732ebd557fb6347d69a4001910b60a8bd0acfceee04f3f1ce |
|
MD5 | 19693b0681132fdc53a8382e2f01fcbc |
|
BLAKE2b-256 | a5e2a0b191aaccd4e6ce9fbb9b2109127525cbc5a941d8474a152e46935792e2 |
File details
Details for the file csv2http-0.0.3a1-py3-none-any.whl
.
File metadata
- Download URL: csv2http-0.0.3a1-py3-none-any.whl
- Upload date:
- Size: 10.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.13 CPython/3.10.4 Darwin/21.5.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0faf6983e2f66e762ad8d4449872e687c74d51a5ec759f09ed8c853aaa3feaa5 |
|
MD5 | 3ae72f648fea9f2a99d6db0f87018fbe |
|
BLAKE2b-256 | 643102210bb3bec8b23f548d43dfbdcbd26498fb62215b750e30192f9560cf4f |