/** * Create the default {@link AwsResponseMetadata}. This might be wrapped by a service * specific metadata object to provide modeled access to additional metadata. (See S3 and Kinesis). */ private AwsResponseMetadata generateResponseMetadata(SdkHttpResponse response, Map<String, String> metadata) { if (!metadata.containsKey(AWS_REQUEST_ID)) { metadata.put(AWS_REQUEST_ID, response.firstMatchingHeader(X_AMZN_REQUEST_ID_HEADER).orElse(null)); } response.headers().forEach((key, value) -> metadata.put(key, value.get(0))); return DefaultAwsResponseMetadata.create(metadata); }
/** * Create the default {@link AwsResponseMetadata}. */ private AwsResponseMetadata generateResponseMetadata(SdkHttpResponse response) { Map<String, String> metadata = new HashMap<>(); metadata.put(AWS_REQUEST_ID, response.firstMatchingHeader(X_AMZN_REQUEST_ID_HEADER).orElse(null)); response.headers().forEach((key, value) -> metadata.put(key, value.get(0))); return DefaultAwsResponseMetadata.create(metadata); } }
/** * Create the default {@link AwsResponseMetadata}. This might be wrapped by a service * specific metadata object to provide modeled access to additional metadata. (See S3 and Kinesis). */ private AwsResponseMetadata generateResponseMetadata(SdkHttpResponse response, Map<String, String> metadata) { if (!metadata.containsKey(AWS_REQUEST_ID)) { metadata.put(AWS_REQUEST_ID, response.firstMatchingHeader(X_AMZN_REQUEST_ID_HEADER).orElse(null)); } response.headers().forEach((key, value) -> metadata.put(key, value.get(0))); return DefaultAwsResponseMetadata.create(metadata); }
/** * Create the default {@link AwsResponseMetadata}. */ private AwsResponseMetadata generateResponseMetadata(SdkHttpResponse response) { Map<String, String> metadata = new HashMap<>(); metadata.put(AWS_REQUEST_ID, response.firstMatchingHeader(X_AMZN_REQUEST_ID_HEADER).orElse(null)); response.headers().forEach((key, value) -> metadata.put(key, value.get(0))); return DefaultAwsResponseMetadata.create(metadata); } }
/** * Create the default {@link AwsResponseMetadata}. This might be wrapped by a service * specific metadata object to provide modeled access to additional metadata. (See S3 and Kinesis). */ private AwsResponseMetadata generateResponseMetadata(SdkHttpResponse response) { Map<String, String> metadata = new HashMap<>(); metadata.put(AWS_REQUEST_ID, response.firstMatchingHeader(X_AMZN_REQUEST_ID_HEADER).orElse(null)); response.headers().forEach((key, value) -> metadata.put(key, value.get(0))); return DefaultAwsResponseMetadata.create(metadata); }
@Override public void onResponse(SdkResponse response) { if (response != null && response.sdkHttpResponse() != null) { this.requestId = response.sdkHttpResponse() .firstMatchingHeader(X_AMZN_REQUEST_ID_HEADER) .orElse(null); this.extendedRequestId = response.sdkHttpResponse() .firstMatchingHeader(X_AMZ_ID_2_HEADER) .orElse(null); } }
/** * Create the default {@link AwsResponseMetadata}. This might be wrapped by a service * specific metadata object to provide modeled access to additional metadata. (See S3 and Kinesis). */ private AwsResponseMetadata generateResponseMetadata(SdkHttpResponse response) { Map<String, String> metadata = new HashMap<>(); metadata.put(AWS_REQUEST_ID, response.firstMatchingHeader(X_AMZN_REQUEST_ID_HEADER).orElse(null)); response.headers().forEach((key, value) -> metadata.put(key, value.get(0))); return DefaultAwsResponseMetadata.create(metadata); }
@Override public Optional<InputStream> modifyHttpResponseContent(Context.ModifyHttpResponse context, ExecutionAttributes executionAttributes) { if (getObjectChecksumEnabledPerResponse(context.request(), context.httpResponse()) && context.responseBody().isPresent()) { SdkChecksum checksum = new Md5Checksum(); long contentLength = context.httpResponse() .firstMatchingHeader(CONTENT_LENGTH_HEADER) .map(Long::parseLong) .orElse(0L); if (contentLength > 0) { return Optional.of(new ChecksumValidatingInputStream(context.responseBody().get(), checksum, contentLength)); } } return context.responseBody(); }
@Override public Optional<Publisher<ByteBuffer>> modifyAsyncHttpResponseContent(Context.ModifyHttpResponse context, ExecutionAttributes executionAttributes) { if (getObjectChecksumEnabledPerResponse(context.request(), context.httpResponse()) && context.responsePublisher().isPresent()) { long contentLength = context.httpResponse() .firstMatchingHeader(CONTENT_LENGTH_HEADER) .map(Long::parseLong) .orElse(0L); SdkChecksum checksum = new Md5Checksum(); executionAttributes.putAttribute(CHECKSUM, checksum); if (contentLength > 0) { return Optional.of(new ChecksumValidatingPublisher(context.responsePublisher().get(), checksum, contentLength)); } } return context.responsePublisher(); }
private void validateResponse(HttpExecuteResponse response, int returnCode, SdkHttpMethod method) throws IOException { RequestMethod requestMethod = RequestMethod.fromString(method.name()); RequestPatternBuilder patternBuilder = RequestPatternBuilder.newRequestPattern(requestMethod, urlMatching("/")) .withHeader("Host", containing("localhost")) .withHeader("User-Agent", equalTo("hello-world!")); if (method == SdkHttpMethod.HEAD) { patternBuilder.withRequestBody(equalTo("")); } else { patternBuilder.withRequestBody(equalTo("Body")); } verify(1, patternBuilder); if (method == SdkHttpMethod.HEAD) { assertThat(response.responseBody()).isEmpty(); } else { assertThat(IoUtils.toUtf8String(response.responseBody().orElse(null))).isEqualTo("hello"); } assertThat(response.httpResponse().firstMatchingHeader("Some-Header")).contains("With Value"); assertThat(response.httpResponse().statusCode()).isEqualTo(returnCode); mockServer.resetMappings(); }
.firstMatchingHeader("x-amz-request-id") .orElse(null);