Skip to content

Commit

Permalink
optional enable logging
Browse files Browse the repository at this point in the history
  • Loading branch information
ychebyshev committed Mar 9, 2024
1 parent 7e62534 commit 7c7f829
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 21 deletions.
10 changes: 9 additions & 1 deletion shvatka/api/config/models/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,16 @@
class ApiConfig(Config):
auth: AuthConfig
context_path: str = ""
enable_logging: bool = False

@classmethod
def from_base(cls, base: Config, auth: AuthConfig, context_path: str = ""):
def from_base(
cls,
base: Config,
auth: AuthConfig,
context_path: str = "",
enable_logging: bool = False,
):
return cls(
paths=base.paths,
db=base.db,
Expand All @@ -21,4 +28,5 @@ def from_base(cls, base: Config, auth: AuthConfig, context_path: str = ""):
file_storage_config=base.file_storage_config,
context_path=context_path,
app=base.app,
enable_logging=enable_logging,
)
1 change: 1 addition & 0 deletions shvatka/api/config/parser/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,5 @@ def load_config(paths: Paths) -> ApiConfig:
base=load_common_config(config_dct, paths, dcf),
auth=load_auth(config_dct["api"]["auth"]),
context_path=config_dct["api"].get("context-path", ""),
enable_logging=bool(config_dct["api"].get("enable-logging", False)),
)
20 changes: 2 additions & 18 deletions shvatka/api/main_factory.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

from asgi_monitor.integrations.fastapi import setup_metrics # type: ignore[import-untyped]
from fastapi import FastAPI
from starlette.middleware.cors import CORSMiddleware

from shvatka.api import routes, middlewares
from shvatka.api.config.models.main import ApiConfig
Expand All @@ -15,27 +14,12 @@
def create_app(config: ApiConfig) -> FastAPI:
app = FastAPI()
app.include_router(routes.setup())
middlewares.setup(app)
middlewares.setup(app, config)
setup_metrics(
app, app_name=config.app.name, include_metrics_endpoint=True, include_trace_exemplar=True
)
if config.auth.disable_cors:
patch_for_cors(app)
return app


def patch_for_cors(app: FastAPI):
origins = [
"http://localhost:4200",
]

app.add_middleware(
CORSMiddleware,
allow_origins=origins,
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
return app


def get_paths() -> Paths:
Expand Down
23 changes: 21 additions & 2 deletions shvatka/api/middlewares/__init__.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,27 @@
from fastapi import FastAPI
from starlette.middleware.base import BaseHTTPMiddleware
from starlette.middleware.cors import CORSMiddleware

from shvatka.api.config.models.main import ApiConfig
from shvatka.api.middlewares.log import LoggingMiddleware


def setup(app: FastAPI) -> None:
app.add_middleware(BaseHTTPMiddleware, dispatch=LoggingMiddleware())
def setup(app: FastAPI, config: ApiConfig) -> None:
if config.enable_logging:
app.add_middleware(BaseHTTPMiddleware, dispatch=LoggingMiddleware())
if config.auth.disable_cors:
patch_for_cors(app)


def patch_for_cors(app: FastAPI):
origins = [
"http://localhost:4200",
]

app.add_middleware(
CORSMiddleware,
allow_origins=origins,
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)

0 comments on commit 7c7f829

Please sign in to comment.