Project

csv-curl

0.0
No commit activity in last 3 years
No release in over 3 years
Tools making mulitple calls using curl
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies
 Project Readme

csv-curl

Utility for making multiple curl requests using a CSV file.

Install

gem install csv-curl

Usage

Usage: csv-curl [OPTIONS] [CURL OPTIONS]
        --template FILE              Path to the template file
        --csv CSV_FILE               Path to the CSV file
        --exec UTILITY               Utility to run on each response

Template

File containing the payload to pass to the curl command, the "-d@" option.

Example JSON template

{
  "user": {
    "name": "{{json:name}}",
    "email": "{{json:email}}",
    "external_id": {{external_id}}
  }
}

CSV File

A CSV file containing the replacement values to use. It must have a header. And have a header for all replacement variables.

Utility

This is an additional command to run on the response body from the curl command.

Example to output only the "id" from a JSON body

csv-curl --csv emails.csv 'https://example.com/user_lookup?email={{param:email}}' --exec 'jq ".id" -r'

Replacement variables

A replacement variable is enclosed in handlebars {{ format: name }}. Replacement variables can be used in the arguments to curl, in the template and in the utility.

(format and name a separated by a colon)

  • name matches a header in the CSV file
  • format escape sequence to apply the the replacement value
    • json JSON encode
    • param URL encode
    • base64 Base64 encode
    • urlsafe64 URL safe Base64 encode
    • hex Hex encode
    • shell Shell encode

Example: lookup users by email and save response by user id.

csv-curl --csv users.csv 'https://example.com/user_lookup?email={{param:email}}' --exec 'cat > {{id}}.json'

# users.csv
id,email
5,bob@example.com
8,johndoe@example.com