Add upload caption

This commit is contained in:
2021-11-21 22:15:24 +03:00
parent d9ad04a16d
commit a7cfff3170
4 changed files with 17 additions and 13 deletions

View File

@@ -15,8 +15,10 @@ class FileUploader:
_aiogram_storage_index = 0
_telethon_storage_index = 0
def __init__(self, file: UploadFile) -> None:
def __init__(self, file: UploadFile, caption: Optional[str] = None) -> None:
self.file = file
self.caption = caption
self.upload_data: Optional[dict] = None
self.upload_backend: Optional[UploadBackends] = None
@@ -46,7 +48,7 @@ class FileUploader:
storage = self.get_aiogram_storage()
self.upload_data = await storage.upload(bytes_io) # type: ignore
self.upload_data = await storage.upload(bytes_io, self.caption) # type: ignore
self.upload_backend = UploadBackends.aiogram
return True
@@ -65,7 +67,7 @@ class FileUploader:
storage = self.get_telethon_storage()
self.upload_data = await storage.upload(bytes_io) # type: ignore
self.upload_data = await storage.upload(bytes_io, caption=self.caption) # type: ignore
self.upload_backend = UploadBackends.telethon
return True
@@ -111,8 +113,8 @@ class FileUploader:
return cls.TELETHON_STORAGES[cls._telethon_storage_index]
@classmethod
async def upload(cls, file: UploadFile) -> Optional[UploadedFile]:
uploader = cls(file)
async def upload(cls, file: UploadFile, caption: Optional[str] = None) -> Optional[UploadedFile]:
uploader = cls(file, caption)
upload_result = await uploader._upload()
if not upload_result:

View File

@@ -1,4 +1,6 @@
from fastapi import File, UploadFile, Depends
from typing import Optional
from fastapi import File, UploadFile, Depends, Form
from starlette import status
from fastapi import APIRouter, HTTPException
@@ -40,8 +42,8 @@ async def create_file(data: CreateUploadedFile):
@router.post("/upload/", response_model=UploadedFile)
async def upload_file(file: UploadFile = File({})):
return await FileUploader.upload(file)
async def upload_file(file: UploadFile = File({}), caption: Optional[str] = Form({})):
return await FileUploader.upload(file, caption=caption)
@router.delete("/{file_id}", response_model=UploadedFile, responses={