Commit 6b3d8138 authored by Yakubov, Sergey's avatar Yakubov, Sergey
Browse files

implement local data broker

parent 180515d9
Loading
Loading
Loading
Loading
Loading
+20 −3
Original line number Diff line number Diff line
@@ -3,7 +3,24 @@
from pydantic import BaseModel


class Response(BaseModel):
    """This is a model for REST API responses"""
class UploadResponse(BaseModel):
    """This is a model for upload response"""

    msg: str
    uid: str


class UploadData(BaseModel):
    """This is a model for file upload"""

    input_path: str
    token: str
    dataset: str
    user: str


class DownloadData(BaseModel):
    """This is a model for file download"""

    uid: str
    output_path: str
    token: str
+11 −6
Original line number Diff line number Diff line
"""This module deals with download route"""

from fastapi import APIRouter, Request
from fastapi import APIRouter, HTTPException, Request

from app.common import Response
from remote_data_broker import RemoteDataBroker

from ..common import DownloadData

# from ..dependencies import get_token_header

router = APIRouter(
@@ -15,8 +16,12 @@ router = APIRouter(
)


@router.get("")
async def download_items(request: Request) -> Response:
@router.get("", response_model_exclude_none=True)
async def download_items(data: DownloadData, request: Request) -> None:
    broker: RemoteDataBroker = request.app.extra.get("broker")
    broker.download()
    return Response(msg="download")
    try:
        broker.download(data=data)
    except Exception:
        raise HTTPException(
            status_code=500, detail="Something went wrong, please try later"
        ) from Exception
+12 −6
Original line number Diff line number Diff line
"""This module deals with upload route"""

from fastapi import APIRouter, Request
from fastapi import APIRouter, HTTPException, Request

# from ..dependencies import get_token_header
from remote_data_broker import RemoteDataBroker

from ..common import Response
from ..common import UploadData, UploadResponse

router = APIRouter(
    prefix="/upload",
@@ -15,8 +15,14 @@ router = APIRouter(
)


@router.post("", response_model=Response)
async def upload_items(request: Request) -> Response:
@router.post("", response_model=UploadResponse, response_model_exclude_none=True)
async def upload_items(data: UploadData, request: Request) -> UploadResponse:
    broker: RemoteDataBroker = request.app.extra.get("broker")
    broker.upload()
    return Response(msg="upload")
    try:
        uid: str = broker.upload(data=data)
    except Exception:
        raise HTTPException(
            status_code=500, detail="Something went wrong, please try later"
        ) from Exception

    return UploadResponse(uid=uid)
+2 −3
Original line number Diff line number Diff line
@@ -2,7 +2,6 @@
__version__ = "0.1.0"

from remote_data_broker.abstract_broker import RemoteDataBroker
from remote_data_broker.local_data_broker import LocalDataBroker

__all__ = [
    "RemoteDataBroker",
]
__all__ = ["RemoteDataBroker", "LocalDataBroker"]
+4 −2
Original line number Diff line number Diff line
from abc import ABC, abstractmethod

from app.common import DownloadData, UploadData


class RemoteDataBroker(ABC):
    """an abstract class for remote data broker"""

    @abstractmethod
    def upload(self) -> None:
    def upload(self, data: UploadData) -> str:
        pass

    @abstractmethod
    def download(self) -> None:
    def download(self, data: DownloadData) -> None:
        pass
Loading