9797import software .amazon .awssdk .services .s3 .model .CreateMultipartUploadRequest ;
9898import software .amazon .awssdk .services .s3 .model .DeleteObjectRequest ;
9999import software .amazon .awssdk .services .s3 .model .GetObjectRequest ;
100+ import software .amazon .awssdk .services .s3 .model .HeadBucketRequest ;
101+ import software .amazon .awssdk .services .s3 .model .HeadObjectRequest ;
100102import software .amazon .awssdk .services .s3 .model .PutObjectRequest ;
101103import software .amazon .awssdk .services .s3 .model .UploadPartRequest ;
102104import software .amazon .awssdk .services .s3 .presigner .S3Presigner ;
105107import software .amazon .awssdk .services .s3 .presigner .model .CreateMultipartUploadPresignRequest ;
106108import software .amazon .awssdk .services .s3 .presigner .model .DeleteObjectPresignRequest ;
107109import software .amazon .awssdk .services .s3 .presigner .model .GetObjectPresignRequest ;
110+ import software .amazon .awssdk .services .s3 .presigner .model .HeadBucketPresignRequest ;
111+ import software .amazon .awssdk .services .s3 .presigner .model .HeadObjectPresignRequest ;
108112import software .amazon .awssdk .services .s3 .presigner .model .PresignedAbortMultipartUploadRequest ;
109113import software .amazon .awssdk .services .s3 .presigner .model .PresignedCompleteMultipartUploadRequest ;
110114import software .amazon .awssdk .services .s3 .presigner .model .PresignedCreateMultipartUploadRequest ;
111115import software .amazon .awssdk .services .s3 .presigner .model .PresignedDeleteObjectRequest ;
112116import software .amazon .awssdk .services .s3 .presigner .model .PresignedGetObjectRequest ;
117+ import software .amazon .awssdk .services .s3 .presigner .model .PresignedHeadBucketRequest ;
118+ import software .amazon .awssdk .services .s3 .presigner .model .PresignedHeadObjectRequest ;
113119import software .amazon .awssdk .services .s3 .presigner .model .PresignedPutObjectRequest ;
114120import software .amazon .awssdk .services .s3 .presigner .model .PresignedUploadPartRequest ;
115121import software .amazon .awssdk .services .s3 .presigner .model .PutObjectPresignRequest ;
120126import software .amazon .awssdk .services .s3 .transform .CreateMultipartUploadRequestMarshaller ;
121127import software .amazon .awssdk .services .s3 .transform .DeleteObjectRequestMarshaller ;
122128import software .amazon .awssdk .services .s3 .transform .GetObjectRequestMarshaller ;
129+ import software .amazon .awssdk .services .s3 .transform .HeadBucketRequestMarshaller ;
130+ import software .amazon .awssdk .services .s3 .transform .HeadObjectRequestMarshaller ;
123131import software .amazon .awssdk .services .s3 .transform .PutObjectRequestMarshaller ;
124132import software .amazon .awssdk .services .s3 .transform .UploadPartRequestMarshaller ;
125133import software .amazon .awssdk .utils .AttributeMap ;
@@ -141,6 +149,8 @@ public final class DefaultS3Presigner extends DefaultSdkPresigner implements S3P
141149 private final S3Configuration serviceConfiguration ;
142150 private final List <ExecutionInterceptor > clientInterceptors ;
143151 private final GetObjectRequestMarshaller getObjectRequestMarshaller ;
152+ private final HeadObjectRequestMarshaller headObjectRequestMarshaller ;
153+ private final HeadBucketRequestMarshaller headBucketRequestMarshaller ;
144154 private final PutObjectRequestMarshaller putObjectRequestMarshaller ;
145155 private final CreateMultipartUploadRequestMarshaller createMultipartUploadRequestMarshaller ;
146156 private final UploadPartRequestMarshaller uploadPartRequestMarshaller ;
@@ -156,16 +166,16 @@ private DefaultS3Presigner(Builder b) {
156166 super (b );
157167
158168 S3Configuration serviceConfiguration = b .serviceConfiguration != null ? b .serviceConfiguration :
159- S3Configuration .builder ()
160- .profileFile (profileFileSupplier ())
161- .profileName (profileName ())
162- .checksumValidationEnabled (false )
163- .build ();
169+ S3Configuration .builder ()
170+ .profileFile (profileFileSupplier ())
171+ .profileName (profileName ())
172+ .checksumValidationEnabled (false )
173+ .build ();
164174 S3Configuration .Builder serviceConfigBuilder = serviceConfiguration .toBuilder ();
165175
166176 if (serviceConfiguration .checksumValidationEnabled ()) {
167177 log .debug (() -> "The provided S3Configuration has ChecksumValidationEnabled set to true. Please note that "
168- + "the pre-signed request can't be executed using a web browser if checksum validation is enabled." );
178+ + "the pre-signed request can't be executed using a web browser if checksum validation is enabled." );
169179 }
170180
171181 if (dualstackEnabled () != null && serviceConfigBuilder .dualstackEnabled () != null ) {
@@ -193,6 +203,10 @@ private DefaultS3Presigner(Builder b) {
193203 // Copied from DefaultS3Client#getObject
194204 this .getObjectRequestMarshaller = new GetObjectRequestMarshaller (protocolFactory );
195205
206+ this .headObjectRequestMarshaller = new HeadObjectRequestMarshaller (protocolFactory );
207+
208+ this .headBucketRequestMarshaller = new HeadBucketRequestMarshaller (protocolFactory );
209+
196210 // Copied from DefaultS3Client#putObject
197211 this .putObjectRequestMarshaller = new PutObjectRequestMarshaller (protocolFactory );
198212
@@ -273,6 +287,28 @@ public PresignedGetObjectRequest presignGetObject(GetObjectPresignRequest reques
273287 .build ();
274288 }
275289
290+ @ Override
291+ public PresignedHeadObjectRequest presignHeadObject (HeadObjectPresignRequest request ) {
292+ return presign (PresignedHeadObjectRequest .builder (),
293+ request ,
294+ request .headObjectRequest (),
295+ HeadObjectRequest .class ,
296+ headObjectRequestMarshaller ::marshall ,
297+ "HeadObject" )
298+ .build ();
299+ }
300+
301+ @ Override
302+ public PresignedHeadBucketRequest presignHeadBucket (HeadBucketPresignRequest request ) {
303+ return presign (PresignedHeadBucketRequest .builder (),
304+ request ,
305+ request .headBucketRequest (),
306+ HeadBucketRequest .class ,
307+ headBucketRequestMarshaller ::marshall ,
308+ "HeadBucket" )
309+ .build ();
310+ }
311+
276312 @ Override
277313 public PresignedPutObjectRequest presignPutObject (PutObjectPresignRequest request ) {
278314 return presign (PresignedPutObjectRequest .builder (),
@@ -573,7 +609,7 @@ private SdkHttpFullRequest presignRequest(ExecutionContext execCtx, SdkHttpFullR
573609 * Presign the provided HTTP request using SRA HttpSigner
574610 */
575611 private SdkHttpFullRequest sraPresignRequest (ExecutionContext execCtx , SdkHttpFullRequest request ,
576- Clock signingClock , Duration expirationDuration ) {
612+ Clock signingClock , Duration expirationDuration ) {
577613 SelectedAuthScheme selectedAuthScheme = execCtx .executionAttributes ().getAttribute (SELECTED_AUTH_SCHEME );
578614 return doSraPresign (request , selectedAuthScheme , signingClock , expirationDuration );
579615 }
@@ -657,7 +693,7 @@ private AttributeMap createClientContextParams(Boolean resolvedDisableS3ExpressS
657693
658694 params .put (S3ClientContextParams .USE_ARN_REGION , serviceConfiguration .useArnRegionEnabled ());
659695 params .put (S3ClientContextParams .DISABLE_MULTI_REGION_ACCESS_POINTS ,
660- !serviceConfiguration .multiRegionEnabled ());
696+ !serviceConfiguration .multiRegionEnabled ());
661697 params .put (S3ClientContextParams .FORCE_PATH_STYLE , serviceConfiguration .pathStyleAccessEnabled ());
662698 params .put (S3ClientContextParams .ACCELERATE , serviceConfiguration .accelerateModeEnabled ());
663699 params .put (S3ClientContextParams .DISABLE_S3_EXPRESS_SESSION_AUTH , resolvedDisableS3ExpressSessionAuth );
@@ -670,10 +706,10 @@ private UseGlobalEndpointResolver createUseGlobalEndpointResolver() {
670706 .get (ServiceMetadataAdvancedOption .DEFAULT_S3_US_EAST_1_REGIONAL_ENDPOINT );
671707
672708 SdkClientConfiguration config = clientConfiguration .toBuilder ()
673- .option (ServiceMetadataAdvancedOption .DEFAULT_S3_US_EAST_1_REGIONAL_ENDPOINT , legacyOption )
674- .option (SdkClientOption .PROFILE_FILE_SUPPLIER , profileFileSupplier ())
675- .option (SdkClientOption .PROFILE_NAME , profileName ())
676- .build ();
709+ .option (ServiceMetadataAdvancedOption .DEFAULT_S3_US_EAST_1_REGIONAL_ENDPOINT , legacyOption )
710+ .option (SdkClientOption .PROFILE_FILE_SUPPLIER , profileFileSupplier ())
711+ .option (SdkClientOption .PROFILE_NAME , profileName ())
712+ .build ();
677713
678714 return new UseGlobalEndpointResolver (config );
679715 }
0 commit comments