S-Dreamer's picture
Create utils/security.py
ff24c30 verified
raw
history blame
601 Bytes
import time
import hmac
import hashlib
from fastapi import HTTPException
REQUEST_LOG = {}
WINDOW_SECONDS = 10
MAX_REQUESTS = 6
def rate_limit(ip):
t = time.time()
entries = REQUEST_LOG.get(ip, [])
entries = [x for x in entries if t - x < WINDOW_SECONDS]
if len(entries) >= MAX_REQUESTS:
raise HTTPException(
status_code=429,
detail="Too many requests."
)
REQUEST_LOG[ip] = entries + [t]
def sign_payload(payload, secret):
return hmac.new(
secret.encode(),
payload.encode(),
hashlib.sha256
).hexdigest()