22 lines
535 B
Python
22 lines
535 B
Python
from __future__ import annotations
|
|
|
|
from fastapi import Request
|
|
|
|
|
|
_BEARER_PARTS = 2
|
|
|
|
|
|
def extract_bearer_token(request: Request) -> str | None:
|
|
"""Extract a Bearer token from a FastAPI request if one is present."""
|
|
|
|
header = request.headers.get("Authorization", "")
|
|
if not header:
|
|
return None
|
|
parts = header.split(None, 1)
|
|
if len(parts) != _BEARER_PARTS:
|
|
return None
|
|
scheme, token = parts[0].lower(), parts[1].strip()
|
|
if scheme != "bearer" or not token:
|
|
return None
|
|
return token
|