"""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=["*"], )