46 lines
1.4 KiB
Python
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"),
|
|
}
|