from __future__ import annotations

from fastapi import Request

from app.middleware.trusted_context import TrustedContext, parse_trusted_context

TRUSTED_CONTEXT_STATE_KEY = "lucos_trusted_context"


def get_trusted_context(request: Request) -> TrustedContext:
    ctx = getattr(request.state, TRUSTED_CONTEXT_STATE_KEY, None)
    if ctx is None:
        ctx = parse_trusted_context(request.headers)
        setattr(request.state, TRUSTED_CONTEXT_STATE_KEY, ctx)
    return ctx
