1
0
Fork 1
mirror of https://github.com/thatmattlove/hyperglass.git synced 2026-01-17 00:38:06 +00:00
thatmattlove-hyperglass/hyperglass/api/middleware.py
2024-03-26 23:59:42 -04:00

34 lines
991 B
Python

"""hyperglass API middleware."""
# Standard Library
import typing as t
# Third Party
from litestar.config.cors import CORSConfig
from litestar.config.compression import CompressionConfig
if t.TYPE_CHECKING:
# Project
from hyperglass.state import HyperglassState
__all__ = ("create_cors_config", "COMPRESSION_CONFIG")
COMPRESSION_CONFIG = CompressionConfig(backend="brotli", brotli_gzip_fallback=True)
REQUEST_LOG_MESSAGE = "REQ"
RESPONSE_LOG_MESSAGE = "RES"
REQUEST_LOG_FIELDS = ("method", "path", "path_params", "query")
RESPONSE_LOG_FIELDS = ("status_code",)
def create_cors_config(state: "HyperglassState") -> CORSConfig:
"""Create CORS configuration from parameters."""
origins = state.params.cors_origins.copy()
if state.settings.dev_mode:
origins = [*origins, state.settings.dev_url, "http://localhost:3000"]
return CORSConfig(
allow_origins=origins,
allow_methods=["GET", "POST", "OPTIONS"],
allow_headers=["*"],
)