Skip to content

API Reference

InterpositionHttpAdapter

interposition_http_adapter.app.InterpositionHttpAdapter

Bases: Starlette

ASGI application that replays HTTP interactions via an Interposition Broker.

Source code in src/interposition_http_adapter/app.py
class InterpositionHttpAdapter(Starlette):
    """ASGI application that replays HTTP interactions via an Interposition Broker."""

    def __init__(self, broker: Broker) -> None:
        """Initialize the adapter with a Broker.

        Args:
            broker: The Interposition Broker to use for replaying interactions.
        """
        self._broker = broker
        handler = _create_handler(broker)
        routes = [
            Route(
                "/{path:path}",
                handler,
                methods=["GET", "POST", "PUT", "DELETE", "PATCH", "HEAD", "OPTIONS"],
            ),
        ]
        super().__init__(routes=routes)

    @classmethod
    def from_store(
        cls,
        cassette_store: "CassetteStore",
        mode: BrokerMode = "replay",
        live_responder: "LiveResponder | None" = None,
    ) -> "InterpositionHttpAdapter":
        """Create an adapter from a CassetteStore.

        Args:
            cassette_store: A store that provides a Cassette.
            mode: The broker mode (replay, record, or auto).
            live_responder: Optional callable for upstream forwarding.

        Returns:
            A fully configured InterpositionHttpAdapter.
        """
        broker = Broker.from_store(
            cassette_store, mode=mode, live_responder=live_responder
        )
        return cls(broker=broker)

    @classmethod
    def from_cassette_file(
        cls,
        path: str | Path,
        mode: BrokerMode = "replay",
        live_responder: "LiveResponder | None" = None,
    ) -> "InterpositionHttpAdapter":
        """Create an adapter from a Cassette JSON file.

        Args:
            path: Path to a JSON file containing a Cassette.
            mode: The broker mode (replay, record, or auto).
            live_responder: Optional callable for upstream forwarding.

        Returns:
            A fully configured InterpositionHttpAdapter.
        """
        store = JsonFileCassetteStore(Path(path))
        return cls.from_store(store, mode=mode, live_responder=live_responder)

__init__

__init__(broker: Broker) -> None

Initialize the adapter with a Broker.

Parameters:

Name Type Description Default
broker Broker

The Interposition Broker to use for replaying interactions.

required
Source code in src/interposition_http_adapter/app.py
def __init__(self, broker: Broker) -> None:
    """Initialize the adapter with a Broker.

    Args:
        broker: The Interposition Broker to use for replaying interactions.
    """
    self._broker = broker
    handler = _create_handler(broker)
    routes = [
        Route(
            "/{path:path}",
            handler,
            methods=["GET", "POST", "PUT", "DELETE", "PATCH", "HEAD", "OPTIONS"],
        ),
    ]
    super().__init__(routes=routes)

from_store classmethod

from_store(
    cassette_store: CassetteStore,
    mode: BrokerMode = "replay",
    live_responder: LiveResponder | None = None,
) -> InterpositionHttpAdapter

Create an adapter from a CassetteStore.

Parameters:

Name Type Description Default
cassette_store CassetteStore

A store that provides a Cassette.

required
mode BrokerMode

The broker mode (replay, record, or auto).

'replay'
live_responder LiveResponder | None

Optional callable for upstream forwarding.

None

Returns:

Type Description
InterpositionHttpAdapter

A fully configured InterpositionHttpAdapter.

Source code in src/interposition_http_adapter/app.py
@classmethod
def from_store(
    cls,
    cassette_store: "CassetteStore",
    mode: BrokerMode = "replay",
    live_responder: "LiveResponder | None" = None,
) -> "InterpositionHttpAdapter":
    """Create an adapter from a CassetteStore.

    Args:
        cassette_store: A store that provides a Cassette.
        mode: The broker mode (replay, record, or auto).
        live_responder: Optional callable for upstream forwarding.

    Returns:
        A fully configured InterpositionHttpAdapter.
    """
    broker = Broker.from_store(
        cassette_store, mode=mode, live_responder=live_responder
    )
    return cls(broker=broker)

from_cassette_file classmethod

from_cassette_file(
    path: str | Path,
    mode: BrokerMode = "replay",
    live_responder: LiveResponder | None = None,
) -> InterpositionHttpAdapter

Create an adapter from a Cassette JSON file.

Parameters:

Name Type Description Default
path str | Path

Path to a JSON file containing a Cassette.

required
mode BrokerMode

The broker mode (replay, record, or auto).

'replay'
live_responder LiveResponder | None

Optional callable for upstream forwarding.

None

Returns:

Type Description
InterpositionHttpAdapter

A fully configured InterpositionHttpAdapter.

Source code in src/interposition_http_adapter/app.py
@classmethod
def from_cassette_file(
    cls,
    path: str | Path,
    mode: BrokerMode = "replay",
    live_responder: "LiveResponder | None" = None,
) -> "InterpositionHttpAdapter":
    """Create an adapter from a Cassette JSON file.

    Args:
        path: Path to a JSON file containing a Cassette.
        mode: The broker mode (replay, record, or auto).
        live_responder: Optional callable for upstream forwarding.

    Returns:
        A fully configured InterpositionHttpAdapter.
    """
    store = JsonFileCassetteStore(Path(path))
    return cls.from_store(store, mode=mode, live_responder=live_responder)