Skip to main content

Hermes cURL is a lightweight wrapper on top of cURL that provides reusable HTTP request configurations in YAML.

Project description

Hermes cURL

Hermes cURL is a lightweight wrapper on top of cURL that provides reusable HTTP request configurations in YAML. Configuration files can import attributes from other files which allows for common settings such as hostnames and authentication headers to be shared by multiple cURL calls.

Usage

Base configuration for an entire API:

# api_base.yml
headers:
  Authorization: Token MySecretAPIToken
  Content-Type: application/json
host: localhost:5000
curl_flags:
   "--location":

Configuration for a specific endpoint:

# api.yml
from: api_base.yml
method: PUT
path: /my/api
body: >
  {"hello": "world"}

Run the hermes command:

$ hermes api.yml
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   128  100   112  100    16   3960    565 --:--:-- --:--:-- --:--:--  4000
{
   "msg": "hello Mr world"
}

Installation

python3 -m pip install hermes-curl

Configuration file reference

Options

  • from (optional): specify a path to another configuration file to inherit configurations from. This path is relative to the current file.
  • path (requires): path on the server to send the request to, including any query params.
  • method (required): HTTP method to use.
  • host (required): server host, including protocol and port.
  • headers (optional): dictionary of headers in the form. ExHeader: value.
  • body (optional): request body.
  • curl_flags (optional): a dictionary with any other curl flags to add. Ex "--cacert: certfile".
  • template_defaults (optional): a dictionary of default template variables.

Config Inheritance

Configurations are merged in the following fashion:

  • Dictionaries are merged. Values set in child configs having precedence and override any values from the parent configuration.
  • path is concatenated, so setting path: /foo/ in the parent and path: /bar/ in the child will result in path: /foo/bar/
  • All other top level configurations use whatever value is set in the child configuration. This includes method, body, and host.

Template Variables

Configurations can contain variables using the {variable_name} syntax. Variables can be passed into the configuration by either setting -t variable_name=value on the cli or by setting template_defaults in the configuration. Values passed on the cli have precedence over values set in template_defaults.

Example

host: http://localhost/
path: api/thing/{pk}/
method: GET
template_defaults:
  pk: 1

Running hermes -t pk=2 example.yml will GET http://localhost/api/thing/2/ and running hermes example.yml will GET http://localhost/api/thing/1/

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hermes_curl-1.0.3.tar.gz (4.5 kB view details)

Uploaded Source

Built Distribution

hermes_curl-1.0.3-py3-none-any.whl (4.5 kB view details)

Uploaded Python 3

File details

Details for the file hermes_curl-1.0.3.tar.gz.

File metadata

  • Download URL: hermes_curl-1.0.3.tar.gz
  • Upload date:
  • Size: 4.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.9.0

File hashes

Hashes for hermes_curl-1.0.3.tar.gz
Algorithm Hash digest
SHA256 9a8db60278f10c399d529b1a41c58aeca84d7cc39d45f40846f2c39df290a2e9
MD5 ce33efd81667af067e0d9455ee852ed7
BLAKE2b-256 8c4266ae0f616b71d0f35f3c8ae00f2cb8bce260ea15cd46f3211b2ba7ea0e0f

See more details on using hashes here.

File details

Details for the file hermes_curl-1.0.3-py3-none-any.whl.

File metadata

  • Download URL: hermes_curl-1.0.3-py3-none-any.whl
  • Upload date:
  • Size: 4.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.9.0

File hashes

Hashes for hermes_curl-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 362f7433dfa3c9c5898631d4e6dd8546d922bbd430feac888a5f0a018321a465
MD5 f0dc494e1ab124132b723f306248a9c1
BLAKE2b-256 e329582e508d1d62268159dc16a9b702eafe90ca2acc39648c563aaca0b76af4

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page