VQA / utils /security.py
VigneshVS2005's picture
Initial commit of GenAI VQA System
2c5cb17
raw
history blame contribute delete
865 Bytes
from fastapi import HTTPException
import time
from config import MAX_IMAGE_SIZE_MB, RATE_LIMIT_PER_MINUTE
# ===== Rate Limiting (Simple Memory-Based) =====
user_requests = {}
def check_rate_limit(user: str):
current_time = time.time()
if user not in user_requests:
user_requests[user] = []
# Keep only last 60 seconds
user_requests[user] = [
t for t in user_requests[user]
if current_time - t < 60
]
if len(user_requests[user]) >= RATE_LIMIT_PER_MINUTE:
raise HTTPException(status_code=429, detail="Too many requests")
user_requests[user].append(current_time)
# ===== Image Size Validation =====
def validate_image_size(file_size_bytes: int):
max_bytes = MAX_IMAGE_SIZE_MB * 1024 * 1024
if file_size_bytes > max_bytes:
raise HTTPException(status_code=400, detail="Image too large")