v1.9.2: S3 right-click context menu — copy presigned download link
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -277,6 +277,26 @@ class S3Client:
|
||||
log.error("S3 delete failed: %s", exc)
|
||||
return False
|
||||
|
||||
def generate_presigned_url(self, bucket: str, key: str,
|
||||
expires_in: int = 3600) -> str | None:
|
||||
"""Generate a presigned download URL for an object.
|
||||
|
||||
expires_in: URL lifetime in seconds (default 1 hour).
|
||||
Returns URL string or None on failure.
|
||||
"""
|
||||
if not self._ensure_connected():
|
||||
return None
|
||||
try:
|
||||
url = self._client.generate_presigned_url(
|
||||
"get_object",
|
||||
Params={"Bucket": bucket, "Key": key},
|
||||
ExpiresIn=expires_in,
|
||||
)
|
||||
return url
|
||||
except Exception as exc:
|
||||
log.error("S3 presigned URL failed: %s", exc)
|
||||
return None
|
||||
|
||||
def get_object_size(self, bucket: str, key: str) -> int:
|
||||
"""Get size of an object in bytes."""
|
||||
if not self._ensure_connected():
|
||||
|
||||
Reference in New Issue
Block a user