from fansifter_common import context from fansifter_common.context.asgi.middleware import ( CorrelationIdMiddleware, RequestContextMiddleware, ) from fansifter_common.logging.asgi.middleware import RequestLoggerMiddleware from fastapi import FastAPI from jwtauth.asgi.middleware import JWTAuthenticationMiddleware from starlette.middleware import Middleware from location import config from location.api import error_handlers from location.api.routers.infra import router as infra_router from location.api.routers.location import router as location_router app = FastAPI( debug=config.DEBUG, title=config.SERVICE_NAME, version=config.SERVICE_VERSION, openapi_url=config.OPENAPI_URL, description="Location Service", servers=config.OPENAPI_SERVERS, middleware=[ Middleware(CorrelationIdMiddleware), Middleware(RequestContextMiddleware), Middleware( RequestLoggerMiddleware, exclude_paths=[ "/hello/", "/openapi.json", "/docs", ], extra_headers=config.DEBUG, ), Middleware( JWTAuthenticationMiddleware, environment=config.ENVIRONMENT, enabled=config.JWT_AUTH_ENABLED, exclude_paths=config.JWT_AUTH_EXCLUDE_PATHS, request_context_func=context.get_request_context, ), ], ) # Register exception handlers app.add_exception_handler(Exception, error_handlers.default_error_handler) # Include routers app.include_router(infra_router) app.include_router(location_router)