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