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
Ejemplo n.º 2
0
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
Ejemplo n.º 3
0
    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("/",
Ejemplo n.º 4
0
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,