Home Assistant Unofficial Reference 2024.12.1
request_context.py
Go to the documentation of this file.
1 """Middleware to set the request context."""
2 
3 from __future__ import annotations
4 
5 from collections.abc import Awaitable, Callable
6 from contextvars import ContextVar
7 
8 from aiohttp.web import Application, Request, StreamResponse, middleware
9 
10 from homeassistant.core import callback
11 from homeassistant.helpers.http import current_request # noqa: F401
12 
13 
14 @callback
16  app: Application, context: ContextVar[Request | None]
17 ) -> None:
18  """Create request context middleware for the app."""
19 
20  @middleware
21  async def request_context_middleware(
22  request: Request, handler: Callable[[Request], Awaitable[StreamResponse]]
23  ) -> StreamResponse:
24  """Request context middleware."""
25  context.set(request)
26  return await handler(request)
27 
28  app.middlewares.append(request_context_middleware)
None setup_request_context(Application app, ContextVar[Request|None] context)