From be3d6f7f7620bca616ff0276149da418ce922180 Mon Sep 17 00:00:00 2001 From: Untone Date: Mon, 6 May 2024 17:11:01 +0300 Subject: [PATCH] fix-obj-2 --- main.py | 46 +++++++++++++++++----------------------------- 1 file changed, 17 insertions(+), 29 deletions(-) diff --git a/main.py b/main.py index ace9de3..2439b3e 100644 --- a/main.py +++ b/main.py @@ -1,7 +1,7 @@ import os import tempfile import uuid -import aiobotocore.session +from aiobotocore.session import get_session import asyncio from starlette.applications import Starlette from starlette.responses import JSONResponse @@ -10,7 +10,6 @@ from starlette.requests import Request from auth import login_required from logger import root_logger as logger - from settings import ( PORT, STORJ_ACCESS_KEY, @@ -20,19 +19,15 @@ from settings import ( STORJ_END_POINT, ) - async def create_s3_client(): - return ( - aiobotocore.session.get_session() - .create_client( - "s3", - aws_access_key_id=STORJ_ACCESS_KEY, - aws_secret_access_key=STORJ_SECRET_KEY, - endpoint_url=STORJ_END_POINT, - ) + session = get_session() + return session.create_client( + "s3", + aws_access_key_id=STORJ_ACCESS_KEY, + aws_secret_access_key=STORJ_SECRET_KEY, + endpoint_url=STORJ_END_POINT, ) - @login_required async def upload_handler(request: Request): logger.debug("Received upload request") @@ -47,32 +42,25 @@ async def upload_handler(request: Request): key = str(uuid.uuid4()) + file_extension logger.debug(f"Generated file key: {key}") - s3 = await create_s3_client() - bucket_resource = s3.Bucket(STORJ_BUCKET_NAME) - - logger.debug("Starting file upload to S3") - content = await file.read() - await bucket_resource.put_object( - Key=key, - Body=content, - ContentType=file.content_type, - ) - logger.debug("File upload completed") + async with create_s3_client() as s3: + logger.debug("Starting file upload to S3") + content = await file.read() + resp = await s3.put_object( + Bucket=STORJ_BUCKET_NAME, + Key=key, + Body=content, + ContentType=file.content_type, + ) + logger.debug("File upload completed") url = f"http://{CDN_DOMAIN}/{key}" logger.info(f"File uploaded successfully: {url}") return JSONResponse({"url": url, "originalFilename": file.filename}) - - - - - async def home(request: Request): logger.debug("Home route called") return JSONResponse({"message": "Hello World!"}) - routes = [ Route("/", home, methods=["GET"]), Route("/", upload_handler, methods=["POST"]),