HR-ATS-Portal/backend/s3/serializers.py

46 lines
1.4 KiB
Python

"""S3 response shapes. Plain dicts only — no DB, no Depends."""
def serialize_upload(result: dict) -> dict:
"""upload result → API dict. ``url`` is the stable private object address for DB."""
return {
"bucket": result.get("bucket"),
"key": result.get("key"),
"url": result.get("url"),
"content_type": result.get("content_type"),
"size": result.get("size"),
"filename": result.get("filename"),
"source": result.get("source"),
"record_id": result.get("record_id"),
"owner_id": result.get("owner_id"),
"access": "private",
}
def serialize_open(result: dict) -> dict:
"""Short-lived presigned GET for opening a private CV in the browser."""
return {
"key": result.get("key"),
"url": result.get("url"),
"expires_in": result.get("expires_in"),
}
def serialize_delete(result: dict) -> dict:
return {
"bucket": result.get("bucket"),
"key": result.get("key"),
"deleted": bool(result.get("deleted")),
}
def serialize_health(result: dict) -> dict:
return {
"status": result.get("status") or "ok",
"bucket": result.get("bucket"),
"region": result.get("region"),
"object_base_url": result.get("object_base_url") or result.get("public_base_url"),
"access": result.get("access") or "private",
"presign_expires_seconds": result.get("presign_expires_seconds"),
}