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 _aiogram_storage_index = 0
_telethon_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.file = file
self.caption = caption
self.upload_data: Optional[dict] = None self.upload_data: Optional[dict] = None
self.upload_backend: Optional[UploadBackends] = None self.upload_backend: Optional[UploadBackends] = None
@@ -46,7 +48,7 @@ class FileUploader:
storage = self.get_aiogram_storage() 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 self.upload_backend = UploadBackends.aiogram
return True return True
@@ -65,7 +67,7 @@ class FileUploader:
storage = self.get_telethon_storage() 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 self.upload_backend = UploadBackends.telethon
return True return True
@@ -111,8 +113,8 @@ class FileUploader:
return cls.TELETHON_STORAGES[cls._telethon_storage_index] return cls.TELETHON_STORAGES[cls._telethon_storage_index]
@classmethod @classmethod
async def upload(cls, file: UploadFile) -> Optional[UploadedFile]: async def upload(cls, file: UploadFile, caption: Optional[str] = None) -> Optional[UploadedFile]:
uploader = cls(file) uploader = cls(file, caption)
upload_result = await uploader._upload() upload_result = await uploader._upload()
if not upload_result: 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 starlette import status
from fastapi import APIRouter, HTTPException from fastapi import APIRouter, HTTPException
@@ -40,8 +42,8 @@ async def create_file(data: CreateUploadedFile):
@router.post("/upload/", response_model=UploadedFile) @router.post("/upload/", response_model=UploadedFile)
async def upload_file(file: UploadFile = File({})): async def upload_file(file: UploadFile = File({}), caption: Optional[str] = Form({})):
return await FileUploader.upload(file) return await FileUploader.upload(file, caption=caption)
@router.delete("/{file_id}", response_model=UploadedFile, responses={ @router.delete("/{file_id}", response_model=UploadedFile, responses={

8
poetry.lock generated
View File

@@ -564,7 +564,7 @@ full = ["aiofiles", "graphene", "itsdangerous", "jinja2", "python-multipart", "p
[[package]] [[package]]
name = "telegram-files-storage" name = "telegram-files-storage"
version = "1.1.0" version = "1.1.1"
description = "Library for upload/download telegram files" description = "Library for upload/download telegram files"
category = "main" category = "main"
optional = false optional = false
@@ -672,7 +672,7 @@ multidict = ">=4.0"
[metadata] [metadata]
lock-version = "1.1" lock-version = "1.1"
python-versions = "^3.9" python-versions = "^3.9"
content-hash = "cd58f61e0599d137f52a54ed623841bf6139dfd6279031fe3ab577fe9584e3e4" content-hash = "1252b47ca248c69e3bd735f5fe938035d58e961e9506b88323410b481e6ed8e6"
[metadata.files] [metadata.files]
aiogram = [ aiogram = [
@@ -1367,8 +1367,8 @@ starlette = [
{file = "starlette-0.14.2.tar.gz", hash = "sha256:7d49f4a27f8742262ef1470608c59ddbc66baf37c148e938c7038e6bc7a998aa"}, {file = "starlette-0.14.2.tar.gz", hash = "sha256:7d49f4a27f8742262ef1470608c59ddbc66baf37c148e938c7038e6bc7a998aa"},
] ]
telegram-files-storage = [ telegram-files-storage = [
{file = "telegram_files_storage-1.1.0-py3-none-any.whl", hash = "sha256:6cb9ceeb6aa67191cc4402f55637bcb2cc3cc311d8a006797a670a9bdc739d56"}, {file = "telegram_files_storage-1.1.1-py3-none-any.whl", hash = "sha256:5a56a19c6950e7db070110c1e1b43affd59ad15ffde195262cfdb6fbc2476fae"},
{file = "telegram_files_storage-1.1.0.tar.gz", hash = "sha256:a8fe7714426a75b97f5da07af1d4eb267c4dda8dcea5ecd18893b1b9ebdec118"}, {file = "telegram_files_storage-1.1.1.tar.gz", hash = "sha256:893776101cb1714bdd69d4d94c01b4b3a22426bfa8afe444f1e2ee94f38044ad"},
] ]
telethon = [ telethon = [
{file = "Telethon-1.23.0-py3-none-any.whl", hash = "sha256:60c976f290806445cf9b8468d6dc98c72ad4d8a4ee2ad9de170aaecb1e96cc8e"}, {file = "Telethon-1.23.0-py3-none-any.whl", hash = "sha256:60c976f290806445cf9b8468d6dc98c72ad4d8a4ee2ad9de170aaecb1e96cc8e"},

View File

@@ -15,7 +15,7 @@ pydantic = {extras = ["dotenv"], version = "^1.8.2"}
asyncpg = "^0.24.0" asyncpg = "^0.24.0"
psycopg2 = "^2.9.1" psycopg2 = "^2.9.1"
python-multipart = "^0.0.5" python-multipart = "^0.0.5"
telegram-files-storage = {extras = ["all"], version = "^1.1.0"} telegram-files-storage = {extras = ["all"], version = "^1.1.1"}
[tool.poetry.dev-dependencies] [tool.poetry.dev-dependencies]
pytest = "^5.2" pytest = "^5.2"