Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/kilo59/csv2http
http request per rows in a csv
https://github.com/kilo59/csv2http
csv http http-client json
Last synced: about 1 month ago
JSON representation
http request per rows in a csv
- Host: GitHub
- URL: https://github.com/kilo59/csv2http
- Owner: Kilo59
- License: mit
- Created: 2022-06-04T20:38:23.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-12-02T05:20:37.000Z (about 2 months ago)
- Last Synced: 2024-12-18T00:39:12.038Z (about 1 month ago)
- Topics: csv, http, http-client, json
- Language: Python
- Homepage: https://pypi.org/project/csv2http/
- Size: 234 KB
- Stars: 1
- Watchers: 2
- Forks: 1
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# csv2http
[![ci](https://github.com/Kilo59/csv2http/workflows/ci/badge.svg)](https://github.com/Kilo59/csv2http/actions)
[![pre-commit.ci status](https://results.pre-commit.ci/badge/github/Kilo59/csv2http/main.svg)](https://results.pre-commit.ci/latest/github/Kilo59/csv2http/main)
[![pypi version](https://img.shields.io/pypi/v/csv2http.svg)](https://pypi.org/project/csv2http/)
![Python Versions](https://img.shields.io/pypi/pyversions/csv2http)
[![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=Kilo59_csv2http&metric=sqale_rating)](https://sonarcloud.io/summary/new_code?id=Kilo59_csv2http)
[![Code Smells](https://sonarcloud.io/api/project_badges/measure?project=Kilo59_csv2http&metric=code_smells)](https://sonarcloud.io/summary/new_code?id=Kilo59_csv2http)
[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/ambv/black)CLI tool and library for making a series of JSON or form-encoded HTTP requests based on a CSV file input.
![Demo](images/demo1.svg)
## Quick start
Install
```
pip install csv2http
```Or with [pipx](https://pypa.github.io/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 urlHTTP 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 absentoptions:
-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 :. 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](https://httpie.io/cli), curl or the [web ui](http://mockbin.io) 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### 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
- [x] As Library - Alpha
- [x] parse csv as dictionary/json - Alpha
- [x] accept mutator function - Alpha
- [x] HTTP POST request with json from csv - Alpha
- [x] limit concurrency - Alpha
- [ ] non-blocking file IO - ???
- [ ] hooks for response results - Beta
- [ ] mkdoc docs - Beta
- [ ] As CLI - Beta
- [x] argparse - Alpha
- [x] 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
- [x] GH Actions CI (lint, test, etc.)
- [ ] GH Actions CD (publish to pypi)