formatting/add meme endpoints
This commit is contained in:
37
endpoints/meme.py
Normal file
37
endpoints/meme.py
Normal file
@ -0,0 +1,37 @@
|
||||
import logging
|
||||
from fastapi import FastAPI, Request, Response
|
||||
from fastapi.responses import JSONResponse
|
||||
from utils.meme_util import MemeUtil
|
||||
|
||||
|
||||
class Meme(FastAPI):
|
||||
"""
|
||||
Misc Endpoints
|
||||
"""
|
||||
|
||||
def __init__(self, app: FastAPI, my_util, constants) -> None:
|
||||
self.app: FastAPI = app
|
||||
self.util = my_util
|
||||
self.meme_util = MemeUtil(constants)
|
||||
self.constants = constants
|
||||
self.endpoints: dict = {
|
||||
"memes/get_meme/{id:path}": self.get_meme_by_id,
|
||||
"memes/list_memes": self.list_memes,
|
||||
}
|
||||
|
||||
for endpoint, handler in self.endpoints.items():
|
||||
app.add_api_route(
|
||||
f"/{endpoint}", handler, methods=["GET"], include_in_schema=True
|
||||
)
|
||||
|
||||
async def get_meme_by_id(self, id: int, request: Request) -> Response:
|
||||
"""Get meme (image) by id"""
|
||||
meme_image = await self.meme_util.get_meme_by_id(id)
|
||||
if not meme_image:
|
||||
return Response(status_code=404, content="Not found")
|
||||
return Response(content=meme_image, media_type="image/png")
|
||||
|
||||
async def list_memes(self, page: int, request: Request) -> Response:
|
||||
"""Get meme (image) by id"""
|
||||
meme_list = await self.meme_util.list_memes(page)
|
||||
return JSONResponse(content={"memes": meme_list})
|
Reference in New Issue
Block a user