Skip to main content

Types for HTTP requests and responses

Project description

HTTP Types in Python

CircleCI PyPi License

Python (3.6 or later) library to read and write records of HTTP exchanges in the HTTP types format.

Installation

pip install http-types

Writing HTTP exchanges

Using HttpExchangeWritera recording of HTTP traffic can be serialised for use with any program that can handle the HTTP Types format:

request = RequestBuilder.from_dict({
        "host": "api.github.com",
        "protocol": "https",
        "method": "get",
        "pathname": "/v1/users",
        "query": {"a": "b", "q": ["1", "2"]},
    }
)

response = ResponseBuilder.from_dict({
        "statusCode": 200,
        "headers": {"content-type": "text/plain"},
        "body": "(response body string)",
    }
)

exchange = HttpExchange(request=request, response=response)

with tempfile.TemporaryFile(mode="w") as output:
    writer = HttpExchangeWriter(output)
    writer.write(exchange)

# Serialize to dictionary
as_dict = HttpExchangeWriter.to_dict(exchange)
# Serialize to JSON string
as_str = HttpExchangeWriter.to_json(exchange)

Reading HTTP exchanges

With HttpExchangeReader recordings in the HTTP Types format can be read for processing:

for exchange in HttpExchangeReader.from_jsonl(input_file):
    assert exchange.request.method == HttpMethod.GET
    assert exchange.request.protocol == Protocol.HTTPS
    assert exchange.response.statusCode == 200

Development

Initial setup:

  1. Create a new virtual environment.
  2. Install dependencies: pip install --upgrade -e '.[dev]'
  3. Install pyright.

To test, run python setup.py test, which will:

Publishing

  1. Bump the version in setup.py if the version is the same as in the published package. Commit and push.
  2. Run python setup.py test and python setup.py dist to check that everything works.
  3. To build and upload the package, run python setup.py upload. Insert PyPI credentials to upload the package to PyPI. The command will also run git tag to tag the commit as a release and push the tags to remote.

To see what the different commands do, see Command classes in setup.py.

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

http-types-0.0.14.tar.gz (7.7 kB view details)

Uploaded Source

Built Distribution

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

http_types-0.0.14-py2.py3-none-any.whl (8.1 kB view details)

Uploaded Python 2Python 3

File details

Details for the file http-types-0.0.14.tar.gz.

File metadata

  • Download URL: http-types-0.0.14.tar.gz
  • Upload date:
  • Size: 7.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.40.1 CPython/3.6.2

File hashes

Hashes for http-types-0.0.14.tar.gz
Algorithm Hash digest
SHA256 47b185596be888cff95da72f66b0bf30f5d5bfa9f302ba11598d23d8216b6379
MD5 aae192a7f043693fe568da6c5dfc7360
BLAKE2b-256 e39b73b3e0d49825130c1977a8863e2416f92db47b00066901700278436441a0

See more details on using hashes here.

File details

Details for the file http_types-0.0.14-py2.py3-none-any.whl.

File metadata

  • Download URL: http_types-0.0.14-py2.py3-none-any.whl
  • Upload date:
  • Size: 8.1 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.40.1 CPython/3.6.2

File hashes

Hashes for http_types-0.0.14-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 3f25e6881e6843fda0fcb9088beca918d6e5d50fa43caefb35c74a78e8643969
MD5 0f6de289e1ba89428e4dcad9da06e49a
BLAKE2b-256 3966ac675cafa9c6782f5c2de2c43d1c3b87f5cfe5d3b34fbf46e42f2287712e

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