AuthorizationΒΆ

There are a few approaches to have authorization:

Static auth data. Just add transformer corresponding to your logic. You can reference self object to get data. Note, that we are not using f-strings here, format string will be evaluated later.

class RequestsClient(SyncClient):
    def __init__(self, base_url: str, session: Session, token: str):
        super().__init__(
            base_url=base_url,
            session=session,
            transformers=[
                Header("Authorization", "Bearer {self.token}")
            ]
        )
        self.token = token

Dynamic auth data. You need to redefine send_request or asend_request and implement token retrieval logic there.

class RequestsClient(RequestsClient):
    def send_request(
        self,
        request: HttpRequest,
    ) -> AbstractContextManager[SyncResponseWrapper]:
        token = get_token()  # custom logic here
        request.headers.append(("Authorization", f"Bearer {token}"))
        super().send_request(request)