Skip to content

Commit 78fa196

Browse files
committed
refactor(S3ClientProvider): extract methods to check status codes of S3Exceptions
1 parent bd800bf commit 78fa196

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

src/main/java/software/amazon/nio/spi/s3/S3ClientProvider.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -216,13 +216,13 @@ private String determineBucketLocation(String bucketName, S3Client locationClien
216216
logger.debug("determining bucket location with getBucketLocation");
217217
return locationClient.getBucketLocation(builder -> builder.bucket(bucketName)).locationConstraintAsString();
218218
} catch (S3Exception e) {
219-
if(e.statusCode() == 403) {
219+
if(isForbidden(e)) {
220220
logger.debug("Cannot determine location of '{}' bucket directly. Attempting to obtain bucket location with headBucket operation", bucketName);
221221
try {
222222
final HeadBucketResponse headBucketResponse = locationClient.headBucket(builder -> builder.bucket(bucketName));
223223
return getBucketRegionFromResponse(headBucketResponse.sdkHttpResponse());
224224
} catch (S3Exception e2) {
225-
if (e2.statusCode() == 301) {
225+
if (isRedirect(e2)) {
226226
return getBucketRegionFromResponse(e2.awsErrorDetails().sdkHttpResponse());
227227
} else {
228228
throw e2;
@@ -234,6 +234,9 @@ private String determineBucketLocation(String bucketName, S3Client locationClien
234234
}
235235
}
236236

237+
private boolean isForbidden(S3Exception e) { return e.statusCode() == 403; }
238+
private boolean isRedirect(S3Exception e) { return e.statusCode() == 301; }
239+
237240
private String getBucketRegionFromResponse(SdkHttpResponse response) {
238241
return response.firstMatchingHeader("x-amz-bucket-region").orElseThrow(() ->
239242
new NoSuchElementException("Head Bucket Response doesn't include the header 'x-amz-bucket-region'")

0 commit comments

Comments
 (0)