Loading app/brokers/filesys/broker.py +1 −2 Original line number Diff line number Diff line Loading @@ -58,9 +58,8 @@ class FilesysBroker(RemoteDataBroker): def download(self, data: DownloadData) -> None: user_info = self._authorize(data.token) fname = decode_filename(data.uid) copy_complete( user_info, settings.rdb_storage_path + "/" + data.uid, data.output_path + "/" + fname, data.output_path, ) app/main.py +12 −3 Original line number Diff line number Diff line """This is the main app""" import logging import uvicorn # type: ignore from fastapi import FastAPI from fastapi import Depends, FastAPI, Request from app.auth.keycloak import KeycloakBroker from app.brokers import FilesysBroker, RemoteDataBroker Loading @@ -8,15 +10,22 @@ from app.server.routers import download, upload from app.settings import settings async def log_json(request: Request) -> None: body = await request.body() logging.debug(f"\tRequest body: {str(body)}") def app_factory(broker: RemoteDataBroker) -> FastAPI: new_app = FastAPI() new_app.include_router(upload.router) new_app.include_router(download.router) new_app.include_router(upload.router, dependencies=[Depends(log_json)]) new_app.include_router(download.router, dependencies=[Depends(log_json)]) new_app.extra = {"broker": broker} return new_app if __name__ == "__main__": logging.basicConfig(level=settings.log_level.upper()) auth = KeycloakBroker() app = app_factory(FilesysBroker(auth)) uvicorn.run(app, host="0.0.0.0", port=settings.rdb_listen_port) app/server/routers/download.py +7 −2 Original line number Diff line number Diff line """This module deals with download route""" import logging from fastapi import APIRouter, HTTPException, Request from app.brokers import RemoteDataBroker Loading @@ -19,8 +21,11 @@ async def download_items(data: DownloadData, request: Request) -> None: try: broker.download(data=data) except AuthError: logging.debug(f"error: {AuthError}") raise HTTPException(status_code=401, detail="Unauthorized") from AuthError except Exception: except Exception as e: logging.debug(f"error: {e}") raise HTTPException( status_code=500, detail="Something went wrong, please try later" ) from Exception ) from e logging.debug(f"\tdownloaded: path={data.output_path}") app/server/routers/upload.py +7 −2 Original line number Diff line number Diff line """This module deals with upload route""" import logging from fastapi import APIRouter, HTTPException, Request from app.brokers import RemoteDataBroker Loading @@ -18,10 +20,13 @@ async def upload_items(data: UploadData, request: Request) -> UploadResponse: try: uid: str = broker.upload(data=data) except AuthError: logging.debug(f"error: {AuthError}") raise HTTPException(status_code=401, detail="Unauthorized") from AuthError except Exception: except Exception as e: logging.debug(f"error: {e}") raise HTTPException( status_code=500, detail="Something went wrong, please try later" ) from Exception ) from e logging.debug(f"\tuploaded: uid={uid}") return UploadResponse(uid=uid) app/settings.py +1 −0 Original line number Diff line number Diff line Loading @@ -10,6 +10,7 @@ class Settings(BaseSettings): keycloak_refresh_url: str = "" keycloak_client: str = "" keycloak_secret: str = "" log_level: str = "debug" class Config: """configuration""" Loading Loading
app/brokers/filesys/broker.py +1 −2 Original line number Diff line number Diff line Loading @@ -58,9 +58,8 @@ class FilesysBroker(RemoteDataBroker): def download(self, data: DownloadData) -> None: user_info = self._authorize(data.token) fname = decode_filename(data.uid) copy_complete( user_info, settings.rdb_storage_path + "/" + data.uid, data.output_path + "/" + fname, data.output_path, )
app/main.py +12 −3 Original line number Diff line number Diff line """This is the main app""" import logging import uvicorn # type: ignore from fastapi import FastAPI from fastapi import Depends, FastAPI, Request from app.auth.keycloak import KeycloakBroker from app.brokers import FilesysBroker, RemoteDataBroker Loading @@ -8,15 +10,22 @@ from app.server.routers import download, upload from app.settings import settings async def log_json(request: Request) -> None: body = await request.body() logging.debug(f"\tRequest body: {str(body)}") def app_factory(broker: RemoteDataBroker) -> FastAPI: new_app = FastAPI() new_app.include_router(upload.router) new_app.include_router(download.router) new_app.include_router(upload.router, dependencies=[Depends(log_json)]) new_app.include_router(download.router, dependencies=[Depends(log_json)]) new_app.extra = {"broker": broker} return new_app if __name__ == "__main__": logging.basicConfig(level=settings.log_level.upper()) auth = KeycloakBroker() app = app_factory(FilesysBroker(auth)) uvicorn.run(app, host="0.0.0.0", port=settings.rdb_listen_port)
app/server/routers/download.py +7 −2 Original line number Diff line number Diff line """This module deals with download route""" import logging from fastapi import APIRouter, HTTPException, Request from app.brokers import RemoteDataBroker Loading @@ -19,8 +21,11 @@ async def download_items(data: DownloadData, request: Request) -> None: try: broker.download(data=data) except AuthError: logging.debug(f"error: {AuthError}") raise HTTPException(status_code=401, detail="Unauthorized") from AuthError except Exception: except Exception as e: logging.debug(f"error: {e}") raise HTTPException( status_code=500, detail="Something went wrong, please try later" ) from Exception ) from e logging.debug(f"\tdownloaded: path={data.output_path}")
app/server/routers/upload.py +7 −2 Original line number Diff line number Diff line """This module deals with upload route""" import logging from fastapi import APIRouter, HTTPException, Request from app.brokers import RemoteDataBroker Loading @@ -18,10 +20,13 @@ async def upload_items(data: UploadData, request: Request) -> UploadResponse: try: uid: str = broker.upload(data=data) except AuthError: logging.debug(f"error: {AuthError}") raise HTTPException(status_code=401, detail="Unauthorized") from AuthError except Exception: except Exception as e: logging.debug(f"error: {e}") raise HTTPException( status_code=500, detail="Something went wrong, please try later" ) from Exception ) from e logging.debug(f"\tuploaded: uid={uid}") return UploadResponse(uid=uid)
app/settings.py +1 −0 Original line number Diff line number Diff line Loading @@ -10,6 +10,7 @@ class Settings(BaseSettings): keycloak_refresh_url: str = "" keycloak_client: str = "" keycloak_secret: str = "" log_level: str = "debug" class Config: """configuration""" Loading