refactor(app): reuse put object request context (#2456)

This commit is contained in:
安正超
2026-04-10 07:08:27 +08:00
committed by GitHub
parent 33b50a5366
commit 8acf2a51b9
+9 -17
View File
@@ -636,8 +636,6 @@ impl DefaultObjectUsecase {
} else {
(EventName::ObjectCreatedPut, QuotaOperation::PutObject)
};
let helper = OperationHelper::new(&req, event_name, S3Operation::PutObject);
if request_context.is_post_object && is_post_object_sse_kms_requested(&req.input, &request_context.headers) {
return Err(s3_error!(NotImplemented, "SSE-KMS is not supported for POST object uploads"));
}
@@ -647,9 +645,11 @@ impl DefaultObjectUsecase {
return Err(s3_error!(InvalidStorageClass));
}
if is_put_object_extract_requested(&request_context.headers) {
return self.execute_put_object_extract(req).await;
return self.execute_put_object_extract(req, request_context).await;
}
let helper = OperationHelper::new(&req, event_name, S3Operation::PutObject);
let resolved_size = resolve_put_body_size(req.input.content_length, &request_context.headers)?;
self.check_bucket_quota(&req.input.bucket, quota_operation, resolved_size as u64)
.await?;
@@ -3075,20 +3075,12 @@ impl DefaultObjectUsecase {
)))
}
#[instrument(level = "debug", skip(self, req))]
pub async fn execute_put_object_extract(&self, req: S3Request<PutObjectInput>) -> S3Result<S3Response<PutObjectOutput>> {
let request_context = PutObjectRequestContext {
headers: req.headers.clone(),
trailing_headers: req.trailing_headers.clone(),
uri_query: req.uri.query().map(str::to_string),
is_post_object: req.extensions.get::<PostObjectRequestMarker>().is_some(),
method: req.method.clone(),
uri: req.uri.clone(),
extensions: req.extensions.clone(),
credentials: req.credentials.clone(),
region: req.region.clone(),
service: req.service.clone(),
};
#[instrument(level = "debug", skip(self, req, request_context))]
async fn execute_put_object_extract(
&self,
req: S3Request<PutObjectInput>,
request_context: PutObjectRequestContext,
) -> S3Result<S3Response<PutObjectOutput>> {
let helper = OperationHelper::new(&req, EventName::ObjectCreatedPut, S3Operation::PutObject).suppress_event();
if is_sse_kms_requested(&req.input, &request_context.headers) {
return Err(s3_error!(NotImplemented, "SSE-KMS is not supported for extract uploads"));