import asyncio from pathlib import Path import os import inject import markdown from litestar import ( Controller, get, post, MediaType, Litestar, ) from litestar.enums import RequestEncodingType from litestar.datastructures import UploadFile from litestar.params import Body from litestar.exceptions import HTTPException from litestar.contrib.jinja import JinjaTemplateEngine from litestar.template.config import TemplateConfig from litestar.response import Template from litestar.static_files import create_static_files_router from server.infra import logger from server.config import get_app_config from server.infra.cache import LocalCacheRepository from server.infra.db import AsyncDB from server.modules.descriptions import CharactersService, Breed, CharactersRepository from server.modules.recognizer import RecognizerService, RecognizerRepository class BreedsController(Controller): path = "/beerds" @post("/dogs") async def beerds_dogs( self, data: UploadFile = Body(media_type=RequestEncodingType.MULTI_PART) ) -> dict: body = await data.read() return await recognizer_service.predict_dog_image(body) @post("/cats") async def beerds_cats( self, data: UploadFile = Body(media_type=RequestEncodingType.MULTI_PART) ) -> dict: body = await data.read() return await recognizer_service.predict_cat_image(body)