From a7cfff317059af73d26f3e0b46a1d8c31d1e3c3e Mon Sep 17 00:00:00 2001 From: Kurbanov Bulat Date: Sun, 21 Nov 2021 22:15:24 +0300 Subject: [PATCH] Add upload caption --- fastapi_file_server/app/services/file_uploader.py | 12 +++++++----- fastapi_file_server/app/views.py | 8 +++++--- poetry.lock | 8 ++++---- pyproject.toml | 2 +- 4 files changed, 17 insertions(+), 13 deletions(-) diff --git a/fastapi_file_server/app/services/file_uploader.py b/fastapi_file_server/app/services/file_uploader.py index 3d28f9c..313b911 100644 --- a/fastapi_file_server/app/services/file_uploader.py +++ b/fastapi_file_server/app/services/file_uploader.py @@ -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: diff --git a/fastapi_file_server/app/views.py b/fastapi_file_server/app/views.py index 1b0e4f6..cf69e5a 100644 --- a/fastapi_file_server/app/views.py +++ b/fastapi_file_server/app/views.py @@ -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={ diff --git a/poetry.lock b/poetry.lock index 4638d42..5d602ad 100644 --- a/poetry.lock +++ b/poetry.lock @@ -564,7 +564,7 @@ full = ["aiofiles", "graphene", "itsdangerous", "jinja2", "python-multipart", "p [[package]] name = "telegram-files-storage" -version = "1.1.0" +version = "1.1.1" description = "Library for upload/download telegram files" category = "main" optional = false @@ -672,7 +672,7 @@ multidict = ">=4.0" [metadata] lock-version = "1.1" python-versions = "^3.9" -content-hash = "cd58f61e0599d137f52a54ed623841bf6139dfd6279031fe3ab577fe9584e3e4" +content-hash = "1252b47ca248c69e3bd735f5fe938035d58e961e9506b88323410b481e6ed8e6" [metadata.files] aiogram = [ @@ -1367,8 +1367,8 @@ starlette = [ {file = "starlette-0.14.2.tar.gz", hash = "sha256:7d49f4a27f8742262ef1470608c59ddbc66baf37c148e938c7038e6bc7a998aa"}, ] telegram-files-storage = [ - {file = "telegram_files_storage-1.1.0-py3-none-any.whl", hash = "sha256:6cb9ceeb6aa67191cc4402f55637bcb2cc3cc311d8a006797a670a9bdc739d56"}, - {file = "telegram_files_storage-1.1.0.tar.gz", hash = "sha256:a8fe7714426a75b97f5da07af1d4eb267c4dda8dcea5ecd18893b1b9ebdec118"}, + {file = "telegram_files_storage-1.1.1-py3-none-any.whl", hash = "sha256:5a56a19c6950e7db070110c1e1b43affd59ad15ffde195262cfdb6fbc2476fae"}, + {file = "telegram_files_storage-1.1.1.tar.gz", hash = "sha256:893776101cb1714bdd69d4d94c01b4b3a22426bfa8afe444f1e2ee94f38044ad"}, ] telethon = [ {file = "Telethon-1.23.0-py3-none-any.whl", hash = "sha256:60c976f290806445cf9b8468d6dc98c72ad4d8a4ee2ad9de170aaecb1e96cc8e"}, diff --git a/pyproject.toml b/pyproject.toml index 075cf45..11a70ae 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -15,7 +15,7 @@ pydantic = {extras = ["dotenv"], version = "^1.8.2"} asyncpg = "^0.24.0" psycopg2 = "^2.9.1" 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] pytest = "^5.2"