This repository has been archived on 2024-05-31. You can view files and clone it, but cannot push or open issues or pull requests.
Telegram/api_avatars.py

41 lines
1.5 KiB
Python

from os import makedirs, path, sep
from fastapi import FastAPI, HTTPException
from fastapi.responses import FileResponse, JSONResponse, Response
from starlette.status import HTTP_404_NOT_FOUND
from modules.utils import configGet
makedirs(f'{configGet("cache", "locations")}{sep}avatars', exist_ok=True)
app = FastAPI(title="HoloUA Avatars API", docs_url=None, redoc_url=None, version="1.0")
@app.get("/check", response_class=JSONResponse, include_in_schema=False)
@app.head("/check", response_class=JSONResponse, include_in_schema=False)
async def check():
return JSONResponse({"detail": "I'm alright, thank you"})
@app.get("/", response_class=FileResponse, include_in_schema=False)
async def avatar_get(avatar_id: str):
if path.exists(f'{configGet("cache", "locations")}{sep}avatars{sep}{avatar_id}'):
return FileResponse(
f'{configGet("cache", "locations")}{sep}avatars{sep}{avatar_id}',
media_type="image/jpg",
)
else:
raise HTTPException(status_code=HTTP_404_NOT_FOUND, detail="File not found")
@app.head("/", response_class=Response, include_in_schema=False)
async def avatar_head(avatar_id: str):
if path.exists(f'{configGet("cache", "locations")}{sep}avatars{sep}{avatar_id}'):
return Response(
headers={
"Content-Length": path.getsize(
f'{configGet("cache", "locations")}{sep}avatars{sep}{avatar_id}'
)
}
)
else:
raise HTTPException(status_code=HTTP_404_NOT_FOUND, detail="File not found")