Skip to main content

HTTP adapter for Interposition.

Project description

interposition-http-adapter

HTTP adapter for Interposition. Serves recorded HTTP interactions from an Interposition Cassette as a real HTTP server, allowing you to replay captured API responses for testing and development.

Installation

pip install interposition-http-adapter

Usage

InterpositionHttpAdapter is an ASGI application (based on Starlette) that replays HTTP interactions through an Interposition Broker.

from interposition import (
    Broker,
    Cassette,
    Interaction,
    InteractionRequest,
    ResponseChunk,
)
import uvicorn

from interposition_http_adapter import InterpositionHttpAdapter

# 1. Build an InteractionRequest describing the HTTP request to match
request = InteractionRequest(
    protocol="http",
    action="GET",
    target="/api/data",
    headers=(),
    body=b"",
)

# 2. Build ResponseChunks with status_code in the first chunk's metadata
response_chunks = (
    ResponseChunk(
        data=b'{"message": "hello"}',
        sequence=0,
        metadata=(("status_code", "200"),),
    ),
)

# 3. Create a Cassette containing the interaction
interaction = Interaction(
    request=request,
    fingerprint=request.fingerprint(),
    response_chunks=response_chunks,
)
cassette = Cassette(interactions=(interaction,))

# 4. Create a Broker in replay mode
broker = Broker(cassette=cassette, mode="replay")

# 5. Create the adapter and serve it
app = InterpositionHttpAdapter(broker=broker)
uvicorn.run(app, host="127.0.0.1", port=8000)

Once the server is running, a GET request to http://127.0.0.1:8000/api/data returns the recorded response with status code 200 and body {"message": "hello"}. Requests that do not match any recorded interaction return a 500 Internal Server Error response.

API Reference

Detailed documentation is available in MkDocs: https://osoekawaitlab.github.io/interposition-http-adapter/.

CLI

The package provides a command-line interface:

interposition_http_adapter --version

License

MIT

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

interposition_http_adapter-0.1.0.tar.gz (5.7 kB view details)

Uploaded Source

Built Distribution

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

interposition_http_adapter-0.1.0-py3-none-any.whl (6.2 kB view details)

Uploaded Python 3

File details

Details for the file interposition_http_adapter-0.1.0.tar.gz.

File metadata

File hashes

Hashes for interposition_http_adapter-0.1.0.tar.gz
Algorithm Hash digest
SHA256 49eeb08e031e266ff51ef7e0fcfc01b62d0a2924387e5a7d6d93888e29d88b29
MD5 5855e7e270b15ceb6cd76b6c8ba1ecf5
BLAKE2b-256 8873d4f43449f7a2f5788031c162c951ce7da86ce8cf74ce8b5dff0f7cf570be

See more details on using hashes here.

Provenance

The following attestation bundles were made for interposition_http_adapter-0.1.0.tar.gz:

Publisher: release.yml on osoekawaitlab/interposition-http-adapter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file interposition_http_adapter-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for interposition_http_adapter-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7572ba768890ebdeb1fd5c872cceea3c0572d253d8dba138b56437e66dd3c137
MD5 075f24b6c4fe36f15d03247466b0efb7
BLAKE2b-256 4012c119be0294a09fdb3d654dfc7f5c4f2427554ab5369ea6cce7789cf7b999

See more details on using hashes here.

Provenance

The following attestation bundles were made for interposition_http_adapter-0.1.0-py3-none-any.whl:

Publisher: release.yml on osoekawaitlab/interposition-http-adapter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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