Source code for pyrestsdk.middleware._base_middleware
"""Houses base Middleware"""
from typing import Optional, TypeVar, Union, Tuple, Mapping
from requests import PreparedRequest, Response
from requests.adapters import HTTPAdapter
B = TypeVar("B", bound="BaseMiddleware")
[docs]class BaseMiddleware(HTTPAdapter):
"""Base class for middleware
Handles moving a Request to the next middleware in the pipeline.
If the current middleware is the last one in the pipeline, it
makes a network request
"""
next: Optional[B] = None
def __init__(self):
super().__init__()
[docs] def send(
self: B,
request: PreparedRequest,
stream: bool = False,
timeout: Optional[Union[float, Tuple[float, float], Tuple[float, None]]] = None,
verify: bool = True,
cert: Optional[
Union[bytes, str, Tuple[Union[bytes, str], Union[bytes, str]]]
] = None,
proxies: Optional[Mapping[str, str]] = None,
) -> Response:
"""Makes a network request if next is none, otherwise requests the next middleware to do so
Args:
request (PreparedRequest): The network request
Returns:
Response: Response from network request
"""
if self.next is None:
return super().send(request, stream, timeout, verify, cert, proxies)
return self.next.send(request, stream, timeout, verify, cert, proxies)