diff --git a/app/data/processed.json:Zone.Identifier b/app/data/processed.json:Zone.Identifier new file mode 100644 index 0000000..1e84e56 --- /dev/null +++ b/app/data/processed.json:Zone.Identifier @@ -0,0 +1,3 @@ +[ZoneTransfer] +ZoneId=3 +HostUrl=https://rjylmqmyfc-496ff2e9c6d22116-0-colab.googleusercontent.com/ diff --git a/app/main.py b/app/main.py index 7f99c6b..783c424 100644 --- a/app/main.py +++ b/app/main.py @@ -28,6 +28,7 @@ import app.models.GeneralErrors as GeneralErrors from app.routers import root from app.routers import auth +from app.routers import items """Implements an API for our polling app""" @@ -61,6 +62,7 @@ app.add_middleware(SlowAPIMiddleware) # Setup routes app.include_router(root.router) +app.include_router(items.router) app.include_router(auth.router) # Setup cache diff --git a/app/models/ItemFields.py b/app/models/ItemFields.py new file mode 100644 index 0000000..1c456ba --- /dev/null +++ b/app/models/ItemFields.py @@ -0,0 +1,21 @@ +from pydantic import BaseModel + +class LogoFields(BaseModel): + """Implements the fields for the logos. + + Args: + BaseModel (pydantic.BaseModel): BaseModel from pydantic + """ + + id: str + filename: str + gdrive_direct_url: str + +class ItemFields(BaseModel): + """Implements the fields for the items. + + Args: + BaseModel (pydantic.BaseModel): BaseModel from pydantic + """ + + logos: list[LogoFields] diff --git a/app/models/ItemModels.py b/app/models/ItemModels.py new file mode 100644 index 0000000..1cccde2 --- /dev/null +++ b/app/models/ItemModels.py @@ -0,0 +1,12 @@ +from pydantic import BaseModel +from app.models.ItemFields import ItemFields + +class ItemModel(BaseModel): + """Implements the model for the items. + + Args: + BaseModel (pydantic.BaseModel): BaseModel from pydantic + """ + + __root__: dict[str, ItemFields] + diff --git a/app/routers/items.py b/app/routers/items.py new file mode 100644 index 0000000..bd29232 --- /dev/null +++ b/app/routers/items.py @@ -0,0 +1,25 @@ +import json +import aiofiles +from fastapi import APIRouter, Request, Response +from fastapi_cache.decorator import cache +from app.dependencies import load_config +from app.models.ItemModels import ItemModel + +router = APIRouter() + +config: dict = load_config() + +@router.get('/logos', response_model=ItemModel, tags=['Logos']) +@cache(config['cache']['expire']) +async def logos(request: Request, response: Response) -> dict: + """Get logos. + + Returns: + json: list of logos + """ + + async with aiofiles.open('app/data/processed.json', 'r') as json_file: + data: dict = {} + data = json.loads(await json_file.read()) + + return data