MirrorAPI/actions/validations/hash.py

60 lines
1.7 KiB
Python

# utils/hash_generator.py
from jose import jwt
from datetime import datetime, timedelta
from datetime import date
import hashlib
# Função que gera o hash baseado na data atual
def generate_storage_hash() -> str:
"""
Gera um hash SHA-256 baseado na data atual no formato YYYYMMDD.
Útil, por exemplo, para criar chaves ou nomes únicos em arquivos estáticos.
Retorna:
str: Hash SHA-256 em formato hexadecimal.
"""
# Obtém a data atual (somente ano, mês e dia)
today = date.today()
# Formata a data como string "YYYYMMDD"
storage_date = today.strftime("%Y%m%d")
# Cria o objeto de hash SHA-256
h = hashlib.sha256()
# Atualiza o hash com o texto codificado em UTF-8
h.update(storage_date.encode("utf-8"))
# Retorna o hash em formato hexadecimal
return h.hexdigest()
# Função que gera o token temporário para acesso ao documento
# def generate_temporary_token(
# expires_minutes: int,
# secret_key: str,
# algorithm: str,
# ) -> str:
# """Gera um token JWT válido por poucos minutos."""
# expire = datetime.utcnow() + timedelta(minutes=expires_minutes)
# payload = {
# "exp": expire,
# }
# return jwt.encode(payload, secret_key, algorithm=algorithm)
def generate_temporary_token(
file_path: str,
expires_minutes: int,
secret_key: str,
algorithm: str,
) -> str:
"""Gera um token JWT válido por poucos minutos."""
expire = datetime.utcnow() + timedelta(minutes=expires_minutes)
payload = {
"sub": file_id,
"filename": file_path, # caminho relativo completo
"exp": expire,
}
return jwt.encode(payload, secret_key, algorithm=algorithm)