Types for HTTP requests and responses
Project description
HTTP Types in Python
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:
- Create a new virtual environment.
- Install dependencies:
pip install --upgrade -e '.[dev]'
To test, run python setup.py test, which will:
- Enforce code formatting using black.
- Test with
pytest, configured in pytest.ini. - Type check with
mypy. - Enforce style guide with flake8, configured in .flake8.
Publishing
- Bump the version in setup.py if the version is the same as in the published package. Commit and push.
- Run
python setup.py testandpython setup.py distto check that everything works. - To build and upload the package, run
python setup.py upload. Insert PyPI credentials to upload the package toPyPI. The command will also rungit tagto 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file http-types-0.0.18.tar.gz.
File metadata
- Download URL: http-types-0.0.18.tar.gz
- Upload date:
- Size: 8.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.1.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d3fd2d56784efd0be102d8e47cd8c1fa555ebf03806b940dc1bef20cb4a78a04
|
|
| MD5 |
ca7a5471f7fd77787bca322c1d3c4df2
|
|
| BLAKE2b-256 |
12eed363f0f6597d1eca7da2b96c129ce577984e148377144e06c40fbf754efb
|
File details
Details for the file http_types-0.0.18-py2.py3-none-any.whl.
File metadata
- Download URL: http_types-0.0.18-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.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.1.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
274be507e4dea51efe3ad0b40eae730e9b65f07a6b08e6c18191bd894b19ccb7
|
|
| MD5 |
1d3870750f6eea3a2c168db472a9bbfc
|
|
| BLAKE2b-256 |
5cf12e1d75b59c2e9426150fe0054fd908f9933173d4dc9ab6bae50a3448ccf5
|