fix-obj-2
All checks were successful
Deploy on Push / deploy (push) Successful in 31s

This commit is contained in:
Untone 2024-05-06 17:11:01 +03:00
parent 7353676000
commit be3d6f7f76

46
main.py
View File

@ -1,7 +1,7 @@
import os import os
import tempfile import tempfile
import uuid import uuid
import aiobotocore.session from aiobotocore.session import get_session
import asyncio import asyncio
from starlette.applications import Starlette from starlette.applications import Starlette
from starlette.responses import JSONResponse from starlette.responses import JSONResponse
@ -10,7 +10,6 @@ from starlette.requests import Request
from auth import login_required from auth import login_required
from logger import root_logger as logger from logger import root_logger as logger
from settings import ( from settings import (
PORT, PORT,
STORJ_ACCESS_KEY, STORJ_ACCESS_KEY,
@ -20,19 +19,15 @@ from settings import (
STORJ_END_POINT, STORJ_END_POINT,
) )
async def create_s3_client(): async def create_s3_client():
return ( session = get_session()
aiobotocore.session.get_session() return session.create_client(
.create_client( "s3",
"s3", aws_access_key_id=STORJ_ACCESS_KEY,
aws_access_key_id=STORJ_ACCESS_KEY, aws_secret_access_key=STORJ_SECRET_KEY,
aws_secret_access_key=STORJ_SECRET_KEY, endpoint_url=STORJ_END_POINT,
endpoint_url=STORJ_END_POINT,
)
) )
@login_required @login_required
async def upload_handler(request: Request): async def upload_handler(request: Request):
logger.debug("Received upload request") logger.debug("Received upload request")
@ -47,32 +42,25 @@ async def upload_handler(request: Request):
key = str(uuid.uuid4()) + file_extension key = str(uuid.uuid4()) + file_extension
logger.debug(f"Generated file key: {key}") logger.debug(f"Generated file key: {key}")
s3 = await create_s3_client() async with create_s3_client() as s3:
bucket_resource = s3.Bucket(STORJ_BUCKET_NAME) logger.debug("Starting file upload to S3")
content = await file.read()
logger.debug("Starting file upload to S3") resp = await s3.put_object(
content = await file.read() Bucket=STORJ_BUCKET_NAME,
await bucket_resource.put_object( Key=key,
Key=key, Body=content,
Body=content, ContentType=file.content_type,
ContentType=file.content_type, )
) logger.debug("File upload completed")
logger.debug("File upload completed")
url = f"http://{CDN_DOMAIN}/{key}" url = f"http://{CDN_DOMAIN}/{key}"
logger.info(f"File uploaded successfully: {url}") logger.info(f"File uploaded successfully: {url}")
return JSONResponse({"url": url, "originalFilename": file.filename}) return JSONResponse({"url": url, "originalFilename": file.filename})
async def home(request: Request): async def home(request: Request):
logger.debug("Home route called") logger.debug("Home route called")
return JSONResponse({"message": "Hello World!"}) return JSONResponse({"message": "Hello World!"})
routes = [ routes = [
Route("/", home, methods=["GET"]), Route("/", home, methods=["GET"]),
Route("/", upload_handler, methods=["POST"]), Route("/", upload_handler, methods=["POST"]),