private AuthRetryParameters redirectToRegionInHeader(Request<?> request, HttpResponse response) { final String region = getServingRegionHeader(response); AWSS3V4Signer v4Signer = buildSigV4Signer(region); endpointResolver.resolveRequestEndpoint(request, region); return buildRetryParams(v4Signer, request.getEndpoint()); }
@Override public AuthRetryParameters shouldRetryWithAuthParam(Request<?> request, HttpResponse response, AmazonServiceException ase) { if (!sigV4RetryPredicate.test(ase)) { return null; } if (hasServingRegionHeader(response)) { return redirectToRegionInHeader(request, response); } else if (canUseVirtualAddressing()) { return redirectToS3External(); } else { throw new SdkClientException(V4_REGION_WARNING, ase); } }
/** * If the response doesn't have the x-amz-region header we have to resort to sending a request * to s3-external-1 * * @return */ private AuthRetryParameters redirectToS3External() { AWSS3V4Signer v4Signer = buildSigV4Signer(Regions.US_EAST_1.getName()); try { URI bucketEndpoint = new URI( String.format("https://%s.s3-external-1.amazonaws.com", endpointResolver.getBucketName())); return buildRetryParams(v4Signer, bucketEndpoint); } catch (URISyntaxException e) { throw new SdkClientException( "Failed to re-send the request to \"s3-external-1.amazonaws.com\". " + V4_REGION_WARNING, e); } }
private static boolean hasServingRegionHeader(HttpResponse response) { return !StringUtils.isNullOrEmpty(getServingRegionHeader(response)); }
new S3V4AuthErrorRetryStrategy(buildDefaultEndpointResolver(getProtocol(request), bucket, key)));
/** * If the response doesn't have the x-amz-region header we have to resort to sending a request * to s3-external-1 * * @return */ private AuthRetryParameters redirectToS3External() { AWSS3V4Signer v4Signer = buildSigV4Signer(Regions.US_EAST_1.getName()); try { URI bucketEndpoint = new URI( String.format("https://%s.s3-external-1.amazonaws.com", endpointResolver.getBucketName())); return buildRetryParams(v4Signer, bucketEndpoint); } catch (URISyntaxException e) { throw new SdkClientException( "Failed to re-send the request to \"s3-external-1.amazonaws.com\". " + V4_REGION_WARNING, e); } }
private static boolean hasServingRegionHeader(HttpResponse response) { return !StringUtils.isNullOrEmpty(getServingRegionHeader(response)); }
new S3V4AuthErrorRetryStrategy(buildDefaultEndpointResolver(getProtocol(request), bucket, key)));
@Override public AuthRetryParameters shouldRetryWithAuthParam(Request<?> request, HttpResponse response, AmazonServiceException ase) { if (!sigV4RetryPredicate.test(ase)) { return null; } if (hasServingRegionHeader(response)) { return redirectToRegionInHeader(request, response); } else if (canUseVirtualAddressing()) { return redirectToS3External(); } else { throw new SdkClientException(V4_REGION_WARNING, ase); } }
private AuthRetryParameters redirectToRegionInHeader(Request<?> request, HttpResponse response) { final String region = getServingRegionHeader(response); AWSS3V4Signer v4Signer = buildSigV4Signer(region); endpointResolver.resolveRequestEndpoint(request, region); return buildRetryParams(v4Signer, request.getEndpoint()); }