Skip to main content

Initialize from a curl command string and get equivalent requests.Session and httpx.Client objects

Project description

CurlSession

pip install curl-session

Initialize from a curl command string and get equivalent requests.Session and httpx.Client objects with the same headers, cookies, proxies, TLS options, and redirect/http2 behavior.

Usage

from curl_session import CurlSession

curl = 'curl -H "Accept: application/json" -b "a=1; b=2" https://example.com/api'
cs = CurlSession(curl)

# httpx
with cs.get_httpx_client() as client:
    r = client.get(cs._parsed.url)  # provide a URL as in original curl if needed
    print(r.text)

# requests
with cs.get_requests_session() as s:
    r = s.get(cs._parsed.url)
    print(r.text)

# run original curl
cp = cs.run()
print(cp.stdout)

MultiCurl Usage

Use MultiCurl to parse and execute multiple cURL commands from a string, with optional filtering and delays.

from curl_session import multi_curl

curl_commands = """
curl 'https://example.com/api1'
curl 'https://example.com/api2' -H 'Authorization: Bearer token'
"""

mc = multi_curl.MultiCurl(curl_commands)
results = mc.run(delay=1.0, url_filter='api1')  # Run with 1s delay, filter by URL substring

for curl in results:
    print(f"URL: {curl.url}, Status: {curl.status_code}, Response: {curl.response}")

Tests

  • Install deps
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
pytest -q

Build and Deploy to PyPI

run release.sh

Notes

  • This is a pragmatic parser covering common curl flags for headers, cookies, data, proxies, TLS, auth, redirect, and http2 options.
  • If --cookie is a filename, it's ignored for safety. Provide explicit cookie strings instead.
  • Timeouts and other runtime-only flags are intentionally not persisted to the session defaults.

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

curl_session-0.1.8.tar.gz (12.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

curl_session-0.1.8-py3-none-any.whl (10.9 kB view details)

Uploaded Python 3

File details

Details for the file curl_session-0.1.8.tar.gz.

File metadata

  • Download URL: curl_session-0.1.8.tar.gz
  • Upload date:
  • Size: 12.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.11

File hashes

Hashes for curl_session-0.1.8.tar.gz
Algorithm Hash digest
SHA256 1a2abff0bc3ebfc22ce4d39ee4c2d6d14bf70c16faf5448fa1c217d233b8a10a
MD5 a84b53d158db476c399fa07e0aa38e9c
BLAKE2b-256 ff6b5690a4b619e119c413eba2eb0510367ace0528529f3dfb77f94720bae0c4

See more details on using hashes here.

File details

Details for the file curl_session-0.1.8-py3-none-any.whl.

File metadata

  • Download URL: curl_session-0.1.8-py3-none-any.whl
  • Upload date:
  • Size: 10.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.11

File hashes

Hashes for curl_session-0.1.8-py3-none-any.whl
Algorithm Hash digest
SHA256 991ebf8106bfb7e7832a0bca12b1f240fcf3d80d5169b45219157275e6c0ee33
MD5 66021cde2138c3c49e3d4beb19a571b9
BLAKE2b-256 bb23859e2089d7d81b5012d334633c5caceda0e99ec95661b93feb5a26e9e947

See more details on using hashes here.

Supported by

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