def fastapi_app(database, db_uri): app = FastAPI( title="orchestrator", openapi_url="/openapi/openapi.yaml", docs_url="/api/docs", redoc_url="/api/redoc", default_response_class=JSONResponse, ) app.include_router(api_router, prefix="/api") app.add_middleware(SessionMiddleware, secret_key=app_settings.SESSION_SECRET) app.add_middleware(DBSessionMiddleware, database=db) origins = app_settings.CORS_ORIGINS.split(",") app.add_middleware( CORSMiddleware, allow_origins=origins, allow_methods=app_settings.CORS_ALLOW_METHODS, allow_headers=app_settings.CORS_ALLOW_HEADERS, expose_headers=app_settings.CORS_EXPOSE_HEADERS, ) app.add_exception_handler(FormException, form_error_handler) app.add_exception_handler(ProblemDetailException, problem_detail_handler) return app
from .models.responses import KakaoAuthResponse from .services import create_access_token config = Config("google.env") oauth = OAuth(config) oauth.register( name="google", server_metadata_url=( "https://accounts.google.com/.well-known/openid-configuration" ), client_kwargs={"scope": "openid email profile"}, ) oauth_client = FastAPI() oauth_client.add_middleware(SessionMiddleware, secret_key=settings.SECRET_KEY) set_exception_handlers(oauth_client) @oauth_client.exception_handler(AuthlibBaseError) async def handle_auth_error( request: Request, exc: AuthlibBaseError ) -> JSONResponse: return JSONResponse( content={"message": exc.description}, status_code=HTTPStatus.UNAUTHORIZED, ) @oauth_client.route("/google") async def google_login(request: Request): # type: ignore
default_response_class=JSONResponse, # root_path="/prod", servers=[ { "url": "https://postgres-boilerplate.renedohmen.nl", "description": "Test environment", } if os.getenv("ENVIRONMENT") == "production" else { "url": "/", "description": "Local environment" }, ], ) app.include_router(api_router, prefix="/api") app.add_middleware(SessionMiddleware, secret_key=app_settings.SESSION_SECRET) app.add_middleware(DBSessionMiddleware, database=db) origins = app_settings.CORS_ORIGINS.split(",") app.add_middleware( CORSMiddleware, allow_origins=origins, allow_methods=app_settings.CORS_ALLOW_METHODS, allow_headers=app_settings.CORS_ALLOW_HEADERS, expose_headers=app_settings.CORS_EXPOSE_HEADERS, ) app.add_exception_handler(FormException, form_error_handler) app.add_exception_handler(ProblemDetailException, problem_detail_handler) @app.router.get("/",
from starlette.responses import JSONResponse from .routers import students, subjects, proctors, sessions, session from .config import Config from tortoise.contrib.fastapi import register_tortoise from .ws import socket_app from .exceptions import UserNotExist, add_exceptions from .redis import redis_cache app = FastAPI() origins = ["*"] app.add_middleware( CORSMiddleware, allow_origins=origins, allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) app.include_router(students.router) app.include_router(subjects.router) app.include_router(proctors.router) app.include_router(sessions.router) app.include_router(session.router) app.mount('/ws', socket_app) register_tortoise( app, db_url=Config.SQLALCHEMY_DATABASE_URL,