eptm_dashboard/.venv/lib/python3.12/site-packages/reflex/middleware/middleware.py

49 lines
1.1 KiB
Python

"""Base Reflex middleware."""
from __future__ import annotations
from abc import ABC, abstractmethod
from typing import TYPE_CHECKING
from reflex_base.event import Event
from reflex.state import BaseState, StateUpdate
if TYPE_CHECKING:
from reflex.app import App
class Middleware(ABC):
"""Middleware to preprocess and postprocess requests."""
@abstractmethod
async def preprocess(
self, app: App, state: BaseState, event: Event
) -> StateUpdate | None:
"""Preprocess the event.
Args:
app: The app.
state: The client state.
event: The event to preprocess.
Returns:
An optional state update to return.
"""
return None
async def postprocess(
self, app: App, state: BaseState, event: Event, update: StateUpdate
) -> StateUpdate:
"""Postprocess the event.
Args:
app: The app.
state: The client state.
event: The event to postprocess.
update: The current state update.
Returns:
An optional state to return.
"""
return update