Skip to content

Commit 8183d94

Browse files
committed
adding javadoc
1 parent 1af8902 commit 8183d94

File tree

1 file changed

+104
-1
lines changed
  • services/s3/src/main/java/software/amazon/awssdk/services/s3/presigner

1 file changed

+104
-1
lines changed

services/s3/src/main/java/software/amazon/awssdk/services/s3/presigner/S3Presigner.java

Lines changed: 104 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@
4040
import software.amazon.awssdk.services.s3.model.CreateMultipartUploadRequest;
4141
import software.amazon.awssdk.services.s3.model.DeleteObjectRequest;
4242
import software.amazon.awssdk.services.s3.model.GetObjectRequest;
43+
import software.amazon.awssdk.services.s3.model.HeadBucketRequest;
44+
import software.amazon.awssdk.services.s3.model.HeadObjectRequest;
4345
import software.amazon.awssdk.services.s3.model.PutObjectRequest;
4446
import software.amazon.awssdk.services.s3.model.UploadPartRequest;
4547
import software.amazon.awssdk.services.s3.presigner.model.AbortMultipartUploadPresignRequest;
@@ -341,17 +343,118 @@ default PresignedGetObjectRequest presignGetObject(Consumer<GetObjectPresignRequ
341343
return presignGetObject(builder.build());
342344
}
343345

346+
/**
347+
* Presign a {@link HeadObjectRequest} so that it can be executed at a later time without requiring additional
348+
* signing or authentication.
349+
* <p/>
350+
*
351+
* <b>Example Usage</b>
352+
* <p/>
353+
*
354+
* <pre>
355+
* {@code
356+
* S3Presigner presigner = ...;
357+
*
358+
* // Create a HeadObjectRequest to be pre-signed
359+
* HeadObjectRequest headObjectRequest =
360+
* HeadObjectRequest.builder()
361+
* .bucket("my-bucket")
362+
* .key("my-key")
363+
* .build();
364+
*
365+
* // Create a HeadObjectPresignRequest to specify the signature duration
366+
* HeadObjectPresignRequest headObjectPresignRequest =
367+
* HeadObjectPresignRequest.builder()
368+
* .signatureDuration(Duration.ofMinutes(10))
369+
* .headObjectRequest(headObjectRequest)
370+
* .build();
371+
*
372+
* // Generate the presigned request
373+
* PresignedHeadObjectRequest presignedHeadObjectRequest =
374+
* presigner.presignHeadObject(headObjectPresignRequest);
375+
*
376+
* // The presigned URL can be used with an HTTP client to retrieve object metadata
377+
* SdkHttpClient httpClient = ApacheHttpClient.builder().build();
378+
* HttpExecuteRequest request = HttpExecuteRequest.builder()
379+
* .request(presignedHeadObjectRequest.httpRequest())
380+
* .build();
381+
* HttpExecuteResponse response = httpClient.prepareRequest(request).call();
382+
*
383+
* // Extract metadata from response headers
384+
* String contentLength = response.httpResponse().firstMatchingHeader("Content-Length").orElse("0");
385+
* }
386+
* </pre>
387+
*/
344388
PresignedHeadObjectRequest presignHeadObject(HeadObjectPresignRequest request);
345389

390+
/**
391+
* Presign a {@link HeadObjectRequest} so that it can be executed at a later time without requiring additional
392+
* signing or authentication.
393+
* <p />
394+
* This is a shorter method of invoking {@link #presignHeadObject(HeadObjectPresignRequest)} without needing
395+
* to call {@code HeadObjectPresignRequest.builder()} or {@code .build()}.
396+
*
397+
* @see #presignHeadObject(HeadObjectPresignRequest)
398+
*/
346399
default PresignedHeadObjectRequest presignHeadObject(Consumer<HeadObjectPresignRequest.Builder> request) {
347400
HeadObjectPresignRequest.Builder builder = HeadObjectPresignRequest.builder();
348401
request.accept(builder);
349402
return presignHeadObject(builder.build());
350403
}
351404

352-
405+
/**
406+
* Presign a {@link HeadBucketRequest} so that it can be executed at a later time without requiring additional
407+
* signing or authentication.
408+
* <p/>
409+
*
410+
* <b>Example Usage</b>
411+
* <p/>
412+
*
413+
* <pre>
414+
* {@code
415+
* S3Presigner presigner = ...;
416+
*
417+
* // Create a HeadBucketRequest to be pre-signed
418+
* HeadBucketRequest headBucketRequest =
419+
* HeadBucketRequest.builder()
420+
* .bucket("my-bucket")
421+
* .build();
422+
*
423+
* // Create a HeadBucketPresignRequest to specify the signature duration
424+
* HeadBucketPresignRequest headBucketPresignRequest =
425+
* HeadBucketPresignRequest.builder()
426+
* .signatureDuration(Duration.ofMinutes(10))
427+
* .headBucketRequest(headBucketRequest)
428+
* .build();
429+
*
430+
* // Generate the presigned request
431+
* PresignedHeadBucketRequest presignedHeadBucketRequest =
432+
* presigner.presignHeadBucket(headBucketPresignRequest);
433+
*
434+
* // The presigned URL can be used with an HTTP client to check bucket existence and access
435+
* SdkHttpClient httpClient = ApacheHttpClient.builder().build();
436+
* HttpExecuteRequest request = HttpExecuteRequest.builder()
437+
* .request(presignedHeadBucketRequest.httpRequest())
438+
* .build();
439+
* HttpExecuteResponse response = httpClient.prepareRequest(request).call();
440+
*
441+
* // Check if bucket exists and is accessible
442+
* boolean bucketExists = response.httpResponse().isSuccessful();
443+
* String region = response.httpResponse().firstMatchingHeader("x-amz-bucket-region").orElse("");
444+
* }
445+
* </pre>
446+
*/
353447
PresignedHeadBucketRequest presignHeadBucket(HeadBucketPresignRequest request);
354448

449+
/**
450+
* Presign a {@link HeadBucketRequest} so that it can be executed at a later time without requiring additional
451+
* signing or authentication.
452+
* <p>
453+
* This is a shorter method of invoking {@link #presignHeadBucket(HeadBucketPresignRequest)} without needing
454+
* to call {@code HeadBucketPresignRequest.builder()} or {@code .build()}.
455+
*
456+
* @see #presignHeadBucket(HeadBucketPresignRequest)
457+
*/
355458
default PresignedHeadBucketRequest presignHeadBucket(Consumer<HeadBucketPresignRequest.Builder> request) {
356459
HeadBucketPresignRequest.Builder builder = HeadBucketPresignRequest.builder();
357460
request.accept(builder);

0 commit comments

Comments
 (0)