Pre-merge edit

This commit is contained in:
IgorVolochay
2026-01-10 13:48:18 +03:00
parent 997204f414
commit e92ade6c94
6 changed files with 27 additions and 32 deletions
+18
View File
@@ -0,0 +1,18 @@
DISABLE_DOCS=false
BACKEND_PORT=5000
LOGS_PATH=./logs
FILES_TTL=86400 # 1 Day
MAX_FILES_SIZE=1073741824 # 1GB
S3_ACCESS_KEY_ID=Some_username
S3_SECRET_ACCESS_KEY=Some_password
S3_ENDPOINT_URL=Some_url
BUCKET_NAME=drop-me-files
REDIS_ADDRESS=Some_url
REDIS_PORT=6379
REDIS_USERNAME=Some_username
REDIS_PASSWORD=Some_password
+4 -2
View File
@@ -29,7 +29,7 @@ logger.add(sys.stdout,
disable_docs = os.getenv("DISABLE_DOCS", "true").lower() == "true"
app: FastAPI = FastAPI(title="DropMeFiles analog",
summary="OpenAPI schema for \"DropMeFiles analog\" project!",
version="0.1",
version="1.0",
contact={"GitHub": "https://github.com/IgorVolochay/Drop-me-files-analog"},
docs_url=None if disable_docs else "/docs",
redoc_url=None if disable_docs else "/redoc",
@@ -38,6 +38,8 @@ app: FastAPI = FastAPI(title="DropMeFiles analog",
s3_worker = S3Worker()
redis_worker = RedisWorker()
max_file_size = int(os.getenv('MAX_FILES_SIZE', 1048576)) # 1 MB if None
class RealIPMiddleware(BaseHTTPMiddleware):
async def dispatch(self, request: Request, call_next):
forwarded = request.headers.get("X-Forwarded-For", "")
@@ -55,7 +57,7 @@ app.add_middleware(RealIPMiddleware)
async def get_upload_token(file_name: str, file_type: str, file_size: int, response: Response, request: Request) -> BaseResponse:
user_ip = request.state.client_ip
logger.debug(f"User IP: {user_ip}; Endpoint: /upload_token; File Name: {file_name}; File Type: {file_type}; File Size: {file_size}")
if file_size > int(os.getenv('MAX_FILES_SIZE')):
if file_size > max_file_size:
response.status_code = status.HTTP_413_CONTENT_TOO_LARGE
logger.warning(f"User IP: {user_ip}; File Name: {file_name}; Exception: The file is too large")
return BaseResponse(result="The uploaded file is too large", error=True)
-1
View File
@@ -9,7 +9,6 @@ dependencies = [
"dotenv>=0.9.9",
"fastapi>=0.121.1",
"loguru>=0.7.3",
"minio>=7.2.20",
"pydantic>=2.12.5",
"python-multipart>=0.0.20",
"redis>=7.1.0",
+1 -8
View File
@@ -1,5 +1,4 @@
import os
from datetime import datetime
import redis
from dotenv import load_dotenv
@@ -33,10 +32,4 @@ class RedisWorker:
def get_record(self, file_uuid:str):
return self.client.hgetall(file_uuid)
if __name__ == "__main__":
worker = RedisWorker()
worker.create_record("127.0.0.1", "some.jpg", "QWERTY", "image/jpeg", datetime.now().isoformat(), file_size=1024)
print(worker.get_record("QWERTY"))
return self.client.hgetall(file_uuid)
+1 -18
View File
@@ -1,6 +1,5 @@
import os
import asyncio
from contextlib import asynccontextmanager
from dotenv import load_dotenv
@@ -43,7 +42,6 @@ class S3Worker:
ExpiresIn=expires_in,
)
async def generate_download_url(self, key: str, filename: str, expires_in: int = 300) -> str:
async with self.get_client() as client:
return await client.generate_presigned_url("get_object",
@@ -55,19 +53,4 @@ class S3Worker:
),
},
ExpiresIn=expires_in,
)
async def test_run():
worker = S3Worker()
url = await worker.generate_download_url("test.txt", "hello.txt")
print(url)
url = await worker.generate_upload_post("some.jpg", content_type="image/jpeg")
print(url)
url = await worker.generate_download_url("some.jpg", "image.jpg")
print(url)
if __name__ == "__main__":
asyncio.run(test_run())
)