v0.152.0
 1from __future__ import annotations
 2
 3from typing import TYPE_CHECKING
 4
 5if TYPE_CHECKING:
 6    from plain.http import Request, Response
 7
 8
 9class HttpMiddleware:
10    """
11    Base class for HTTP middleware using before/after phases.
12
13    Subclasses override before_request() and/or after_response():
14
15        class MyMiddleware(HttpMiddleware):
16            def before_request(self, request: Request) -> Response | None:
17                # Return Response to short-circuit, or None to continue
18                return None
19
20            def after_response(self, request: Request, response: Response) -> Response:
21                # Modify and return the response
22                return response
23    """
24
25    def before_request(self, request: Request) -> Response | None:
26        """Return Response to short-circuit, or None to continue."""
27        return None
28
29    def after_response(self, request: Request, response: Response) -> Response:
30        """Modify and return the response."""
31        return response