Migrated to deta from imgur for image-storing

This commit is contained in:
Mawoka
2022-04-01 18:38:32 +02:00
parent 6d28608824
commit b3a54ce4f5
11 changed files with 182 additions and 62 deletions
+4 -2
View File
@@ -9,8 +9,9 @@ from fastapi.responses import JSONResponse
import re
from classquiz.auth import get_current_user, get_current_user_optional
from classquiz.config import redis
from classquiz.config import redis, settings
from classquiz.db.models import Quiz, QuizInput, User, PlayGame
settings = settings()
router = APIRouter()
@@ -18,9 +19,10 @@ router = APIRouter()
@router.post("/create")
async def create_quiz_lol(quiz_input: QuizInput, user: User = Depends(get_current_user)):
imgur_regex = r"^https://i\.imgur\.com\/.{7}.(jpg|png|gif)$"
server_regex = rf"^{settings.root_address}/api/v1/storage/download/.{36}--.{36}$"
for question in quiz_input.questions:
if question.image is not None:
if not re.match(imgur_regex, question.image):
if not re.match(imgur_regex, question.image) or not re.match(server_regex, question.image):
raise HTTPException(status_code=400, detail="image url is not valid")
quiz = Quiz(**quiz_input.dict(), user_id=user.id, id=uuid.uuid4())
await redis.delete("global_quiz_count")
+21
View File
@@ -0,0 +1,21 @@
from fastapi import APIRouter
from fastapi.responses import StreamingResponse
from classquiz.config import settings
import io
from classquiz.storage import Storage
settings = settings()
router = APIRouter()
@router.get('/download/{file_name}')
async def download_file(file_name: str):
storage = Storage(backend=settings.storage_backend, deta_key=settings.deta_project_key,
deta_id=settings.deta_project_id)
download = await storage.download(file_name)
def iter_file():
yield from download
return StreamingResponse(iter_file(), media_type='image/*')