Skip to content

Commit c85f7b6

Browse files
committed
Set headers on S3 object directly
1 parent cbc085b commit c85f7b6

File tree

2 files changed

+14
-13
lines changed

2 files changed

+14
-13
lines changed
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
from .middleware import S3ResponseMiddleware # noqa: F401
22

3-
__version__ = "0.0.2"
3+
__version__ = "0.0.3"

src/asgi_s3_response_middleware/middleware.py

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,11 @@ async def __call__(self, scope: Scope, receive: Receive, send: Send):
2727
return await self.app(scope, receive, send)
2828

2929
s3_key = None # Persist key across header & body messages
30+
s3_headers = {} # Persist headers across header & body messages
3031

3132
async def send_with_s3_response(message: Message):
3233
nonlocal s3_key
34+
nonlocal s3_headers
3335

3436
if message["type"] == "http.response.start":
3537
headers = MutableHeaders(scope=message)
@@ -43,25 +45,23 @@ async def send_with_s3_response(message: Message):
4345
self.size_threshold,
4446
)
4547
s3_key = self.key_generator()
48+
s3_headers = {
49+
f"Content{key.title()}": headers[f"content-{key}"]
50+
for key in [
51+
"type",
52+
"encoding",
53+
"language",
54+
"disposition",
55+
]
56+
if f"content-{key}" in headers
57+
}
4658
message["status"] = 303
4759
headers["content-length"] = "0"
4860
headers["location"] = self.s3_client.generate_presigned_url(
4961
"get_object",
5062
Params={
5163
"Bucket": self.s3_bucket_name,
5264
"Key": s3_key,
53-
**{
54-
f"ResponseContent{key.title()}": headers[
55-
f"content-{key}"
56-
]
57-
for key in [
58-
"type",
59-
"encoding",
60-
"language",
61-
"disposition",
62-
]
63-
if f"content-{key}" in headers
64-
},
6565
},
6666
ExpiresIn=self.url_expiry,
6767
)
@@ -78,6 +78,7 @@ async def send_with_s3_response(message: Message):
7878
Bucket=self.s3_bucket_name,
7979
Key=s3_key,
8080
Body=message["body"],
81+
**s3_headers,
8182
)
8283
message = {"type": "http.response.body", "body": b""}
8384

0 commit comments

Comments
 (0)