Spaces:
Sleeping
Sleeping
Commit
·
3fa92e6
1
Parent(s):
db3bed8
fix: CRITICAL - Replace S3 URIs with presigned URLs in all API responses
Browse files- Changed file_url in session.file_metadata to use presigned_url instead of s3_uri
- Updated file_data in upload messages to use presigned_url
- Fixed fileUrl in message metadata to use presigned_url
- All user-facing fileUrl fields now return accessible presigned URLs
- S3 URIs kept internally as s3_uri field for reference
- Fixes issue where users received unusable s3:// URIs
- api_routes_v2.py +5 -4
api_routes_v2.py
CHANGED
|
@@ -781,7 +781,8 @@ def upload_stream_to_s3(chat_id: str, file: UploadFile) -> str:
|
|
| 781 |
"file_metadata": {
|
| 782 |
"has_file": True,
|
| 783 |
"file_name": file.filename,
|
| 784 |
-
"file_url":
|
|
|
|
| 785 |
"uploaded_at": datetime.utcnow().isoformat() + "Z",
|
| 786 |
**presigned # CHANGE
|
| 787 |
}
|
|
@@ -795,7 +796,7 @@ def upload_stream_to_s3(chat_id: str, file: UploadFile) -> str:
|
|
| 795 |
"file_data": {
|
| 796 |
"has_file": True,
|
| 797 |
"file_name": file.filename,
|
| 798 |
-
"file_url":
|
| 799 |
}
|
| 800 |
}
|
| 801 |
|
|
@@ -1053,8 +1054,8 @@ async def chat_unified(
|
|
| 1053 |
if file_info:
|
| 1054 |
file_meta_for_msg = {
|
| 1055 |
"fileName": file.filename if file else None,
|
| 1056 |
-
"fileUrl": file_info.get("
|
| 1057 |
-
"s3_uri": file_info.get("s3_uri")
|
| 1058 |
}
|
| 1059 |
_add_and_mirror_message(chat_id, "user", message, file_metadata=file_meta_for_msg)
|
| 1060 |
# CHANGE: maybe generate a session title after first real user message
|
|
|
|
| 781 |
"file_metadata": {
|
| 782 |
"has_file": True,
|
| 783 |
"file_name": file.filename,
|
| 784 |
+
"file_url": presigned["presigned_url"], # CRITICAL: Use presigned URL, not S3 URI
|
| 785 |
+
"s3_uri": s3_uri, # Keep for internal reference
|
| 786 |
"uploaded_at": datetime.utcnow().isoformat() + "Z",
|
| 787 |
**presigned # CHANGE
|
| 788 |
}
|
|
|
|
| 796 |
"file_data": {
|
| 797 |
"has_file": True,
|
| 798 |
"file_name": file.filename,
|
| 799 |
+
"file_url": presigned["presigned_url"] # Use presigned URL for user access
|
| 800 |
}
|
| 801 |
}
|
| 802 |
|
|
|
|
| 1054 |
if file_info:
|
| 1055 |
file_meta_for_msg = {
|
| 1056 |
"fileName": file.filename if file else None,
|
| 1057 |
+
"fileUrl": file_info.get("presigned_url"), # Use presigned URL, not S3 URI
|
| 1058 |
+
"s3_uri": file_info.get("s3_uri") # Keep for internal reference
|
| 1059 |
}
|
| 1060 |
_add_and_mirror_message(chat_id, "user", message, file_metadata=file_meta_for_msg)
|
| 1061 |
# CHANGE: maybe generate a session title after first real user message
|