Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

csv2http

ci pypi version Python Versions Maintainability Rating Code Smells Code style: black

CLI tool and library for making a series of JSON or form-encoded HTTP requests based on a CSV file input.

Demo

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 and example.csv to 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)

Source distribution for csv2http 0.0.3a1
File Size Uploaded
csv2http-0.0.3a1.tar.gz 16.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for csv2http 0.0.3a1
File Interpreter ABI Platform
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
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page