@Override public SdkHttpFullRequest.Builder execute(SdkHttpFullRequest input, RequestExecutionContext context) throws Exception { return input.toBuilder(); } }
@Override public SdkHttpFullRequest marshall(AudioEvent audioEvent) { Validate.paramNotNull(audioEvent, "audioEvent"); try { ProtocolMarshaller<SdkHttpFullRequest> protocolMarshaller = protocolFactory .createProtocolMarshaller(SDK_OPERATION_BINDING); return protocolMarshaller.marshall(audioEvent).toBuilder().putHeader(":message-type", "event") .putHeader(":event-type", "AudioEvent").putHeader(":content-type", "application/octet-stream").build(); } catch (Exception e) { throw SdkClientException.builder().message("Unable to marshall request to JSON: " + e.getMessage()).cause(e).build(); } } }
private SdkHttpFullRequest addContentSha256Header(SdkHttpFullRequest request) { return request.toBuilder().putHeader(X_AMZ_CONTENT_SHA256, "required").build(); } }
@Override public SdkHttpFullRequest marshall(AudioEvent audioEvent) { Validate.paramNotNull(audioEvent, "audioEvent"); try { ProtocolMarshaller<SdkHttpFullRequest> protocolMarshaller = protocolFactory .createProtocolMarshaller(SDK_OPERATION_BINDING); return protocolMarshaller.marshall(audioEvent).toBuilder().putHeader(":message-type", "event") .putHeader(":event-type", "AudioEvent").putHeader(":content-type", "application/octet-stream").build(); } catch (Exception e) { throw SdkClientException.builder().message("Unable to marshall request to JSON: " + e.getMessage()).cause(e).build(); } } }
private SdkHttpFullRequest addContentSha256Header(SdkHttpFullRequest request) { return request.toBuilder() .putHeader(X_AMZ_CONTENT_SHA256, "STREAMING-AWS4-HMAC-SHA256-EVENTS").build(); }
private SdkHttpFullRequest addContentSha256Header(SdkHttpFullRequest request) { return request.toBuilder() .putHeader(X_AMZ_CONTENT_SHA256, "STREAMING-AWS4-HMAC-SHA256-EVENTS").build(); }
private SdkHttpFullRequest addContentSha256Header(SdkHttpFullRequest request) { return request.toBuilder().putHeader(X_AMZ_CONTENT_SHA256, "required").build(); } }
/** * Add the {@value HEADER_SDK_RETRY_INFO} header to the request. Contains metadata about request count, * backoff, and retry capacity. * * @return Request with retry info header added. */ public SdkHttpFullRequest addRetryInfoHeader(SdkHttpFullRequest request, int requestCount) throws Exception { int availableRetryCapacity = retryCapacity.availableCapacity(); return request.toBuilder() .putHeader(HEADER_SDK_RETRY_INFO, singletonList(String.format("%s/%s/%s", requestCount - 1, lastBackoffDelay.toMillis(), availableRetryCapacity >= 0 ? availableRetryCapacity : ""))) .build(); }
private SdkHttpFullRequest getRequestWithContentLength(SdkHttpFullRequest request, SdkHttpContentPublisher requestProvider) { if (shouldSetContentLength(request, requestProvider)) { return request.toBuilder() .putHeader("Content-Length", String.valueOf(requestProvider.contentLength().get())) .build(); } return request; }
@Override public SdkHttpFullRequest modifyHttpRequest(Context.ModifyHttpRequest context, ExecutionAttributes executionAttributes) { return context.httpRequest() .toBuilder() .putHeader("Accept", "application/json") .build(); } }
@Override public Response<OutputT> execute(SdkHttpFullRequest request, RequestExecutionContext context) throws Exception { if (request.contentStreamProvider().isPresent()) { request = request.toBuilder() .contentStreamProvider(createManagedStream(request.contentStreamProvider().get())).build(); } InterruptMonitor.checkInterrupted(); return wrapped.execute(request, context); }
/** * Modifies the given {@link SdkHttpFullRequest} with new host if host prefix is enabled and set. */ private static SdkHttpFullRequest modifyEndpointHostIfNeeded(SdkHttpFullRequest originalRequest, SdkClientConfiguration clientConfiguration, ClientExecutionParams executionParams) { if (executionParams.discoveredEndpoint() != null) { URI discoveredEndpoint = executionParams.discoveredEndpoint(); return originalRequest.toBuilder().host(discoveredEndpoint.getHost()).port(discoveredEndpoint.getPort()).build(); } Boolean disableHostPrefixInjection = clientConfiguration.option(SdkAdvancedClientOption.DISABLE_HOST_PREFIX_INJECTION); if ((disableHostPrefixInjection != null && disableHostPrefixInjection.equals(Boolean.TRUE)) || StringUtils.isEmpty(executionParams.hostPrefixExpression())) { return originalRequest; } return originalRequest.toBuilder() .host(executionParams.hostPrefixExpression() + originalRequest.host()) .build(); }
@Override public SdkHttpFullRequest marshall(T in) { SdkHttpFullRequest.Builder marshalled = delegate.marshall(in).toBuilder(); marshalled.contentStreamProvider(requestBody.contentStreamProvider()); String contentType = marshalled.firstMatchingHeader(CONTENT_TYPE) .orElse(null); if (StringUtils.isEmpty(contentType)) { marshalled.putHeader(CONTENT_TYPE, requestBody.contentType()); } marshalled.putHeader(CONTENT_LENGTH, String.valueOf(requestBody.contentLength())); return marshalled.build(); } }
marshalled = marshalled.toBuilder() .contentStreamProvider( finalizeSdkHttpRequestContext.requestBody().get().contentStreamProvider())
private <InputT extends SdkRequest, OutputT, ReturnT> ReturnT execute( ClientExecutionParams<InputT, OutputT> executionParams, ExecutionContext executionContext, HttpResponseHandler<ReturnT> responseHandler) { InputT inputT = (InputT) finalizeSdkRequest(executionContext).request(); InterceptorContext sdkHttpFullRequestContext = finalizeSdkHttpFullRequest(executionParams, executionContext, inputT, clientConfiguration); SdkHttpFullRequest marshalled = (SdkHttpFullRequest) sdkHttpFullRequestContext.httpRequest(); // TODO Pass requestBody as separate arg to invoke if (sdkHttpFullRequestContext.requestBody().isPresent()) { marshalled = marshalled.toBuilder() .contentStreamProvider(sdkHttpFullRequestContext.requestBody().get().contentStreamProvider()) .build(); } return invoke(marshalled, inputT, executionContext, responseHandler, executionParams.getErrorResponseHandler()); }
protected SdkHttpFullRequest.Builder doSign(SdkHttpFullRequest request, Aws4SignerRequestParams requestParams, T signingParams) { SdkHttpFullRequest.Builder mutableRequest = request.toBuilder(); AwsCredentials sanitizedCredentials = sanitizeCredentials(signingParams.awsCredentials()); if (sanitizedCredentials instanceof AwsSessionCredentials) { addSessionCredentials(mutableRequest, (AwsSessionCredentials) sanitizedCredentials); } addHostHeader(mutableRequest); addDateHeader(mutableRequest, requestParams.getFormattedSigningDateTime()); String contentSha256 = calculateContentHash(mutableRequest, signingParams); mutableRequest.firstMatchingHeader(SignerConstant.X_AMZ_CONTENT_SHA256) .filter(h -> h.equals("required")) .ifPresent(h -> mutableRequest.putHeader(SignerConstant.X_AMZ_CONTENT_SHA256, contentSha256)); String canonicalRequest = createCanonicalRequest(mutableRequest, contentSha256, signingParams.doubleUrlEncode()); String stringToSign = createStringToSign(canonicalRequest, requestParams); byte[] signingKey = deriveSigningKey(sanitizedCredentials, requestParams); byte[] signature = computeSignature(stringToSign, signingKey); mutableRequest.putHeader(SignerConstant.AUTHORIZATION, buildAuthorizationHeader(signature, sanitizedCredentials, requestParams, mutableRequest)); processRequestPayload(mutableRequest, signature, signingKey, requestParams, signingParams); return mutableRequest; }
protected SdkHttpFullRequest.Builder doSign(SdkHttpFullRequest request, Aws4SignerRequestParams requestParams, T signingParams) { SdkHttpFullRequest.Builder mutableRequest = request.toBuilder(); AwsCredentials sanitizedCredentials = sanitizeCredentials(signingParams.awsCredentials()); if (sanitizedCredentials instanceof AwsSessionCredentials) { addSessionCredentials(mutableRequest, (AwsSessionCredentials) sanitizedCredentials); } addHostHeader(mutableRequest); addDateHeader(mutableRequest, requestParams.getFormattedSigningDateTime()); String contentSha256 = calculateContentHash(mutableRequest, signingParams); mutableRequest.firstMatchingHeader(SignerConstant.X_AMZ_CONTENT_SHA256) .filter(h -> h.equals("required")) .ifPresent(h -> mutableRequest.putHeader(SignerConstant.X_AMZ_CONTENT_SHA256, contentSha256)); String canonicalRequest = createCanonicalRequest(mutableRequest, contentSha256, signingParams.doubleUrlEncode()); String stringToSign = createStringToSign(canonicalRequest, requestParams); byte[] signingKey = deriveSigningKey(sanitizedCredentials, requestParams); byte[] signature = computeSignature(stringToSign, signingKey); mutableRequest.putHeader(SignerConstant.AUTHORIZATION, buildAuthorizationHeader(signature, sanitizedCredentials, requestParams, mutableRequest)); processRequestPayload(mutableRequest, signature, signingKey, requestParams, signingParams); return mutableRequest; }
.toBuilder() .uri(endpoint);
protected SdkHttpFullRequest.Builder doPresign(SdkHttpFullRequest request, Aws4SignerRequestParams requestParams, U signingParams) { SdkHttpFullRequest.Builder mutableRequest = request.toBuilder(); long expirationInSeconds = generateExpirationTime(signingParams); addHostHeader(mutableRequest); AwsCredentials sanitizedCredentials = sanitizeCredentials(signingParams.awsCredentials()); if (sanitizedCredentials instanceof AwsSessionCredentials) { // For SigV4 pre-signing URL, we need to add "X-Amz-Security-Token" // as a query string parameter, before constructing the canonical // request. mutableRequest.putRawQueryParameter(SignerConstant.X_AMZ_SECURITY_TOKEN, ((AwsSessionCredentials) sanitizedCredentials).sessionToken()); } // Add the important parameters for v4 signing String timeStamp = requestParams.getFormattedSigningDateTime(); addPreSignInformationToRequest(mutableRequest, sanitizedCredentials, requestParams, timeStamp, expirationInSeconds); String contentSha256 = calculateContentHashPresign(mutableRequest, signingParams); String canonicalRequest = createCanonicalRequest(mutableRequest, contentSha256, signingParams.doubleUrlEncode()); String stringToSign = createStringToSign(canonicalRequest, requestParams); byte[] signingKey = deriveSigningKey(sanitizedCredentials, requestParams); byte[] signature = computeSignature(stringToSign, signingKey); mutableRequest.putRawQueryParameter(SignerConstant.X_AMZ_SIGNATURE, BinaryUtils.toHex(signature)); return mutableRequest; }
protected SdkHttpFullRequest.Builder doPresign(SdkHttpFullRequest request, Aws4SignerRequestParams requestParams, U signingParams) { SdkHttpFullRequest.Builder mutableRequest = request.toBuilder(); long expirationInSeconds = generateExpirationTime(signingParams); addHostHeader(mutableRequest); AwsCredentials sanitizedCredentials = sanitizeCredentials(signingParams.awsCredentials()); if (sanitizedCredentials instanceof AwsSessionCredentials) { // For SigV4 pre-signing URL, we need to add "X-Amz-Security-Token" // as a query string parameter, before constructing the canonical // request. mutableRequest.putRawQueryParameter(SignerConstant.X_AMZ_SECURITY_TOKEN, ((AwsSessionCredentials) sanitizedCredentials).sessionToken()); } // Add the important parameters for v4 signing String timeStamp = requestParams.getFormattedSigningDateTime(); addPreSignInformationToRequest(mutableRequest, sanitizedCredentials, requestParams, timeStamp, expirationInSeconds); String contentSha256 = calculateContentHashPresign(mutableRequest, signingParams); String canonicalRequest = createCanonicalRequest(mutableRequest, contentSha256, signingParams.doubleUrlEncode()); String stringToSign = createStringToSign(canonicalRequest, requestParams); byte[] signingKey = deriveSigningKey(sanitizedCredentials, requestParams); byte[] signature = computeSignature(stringToSign, signingKey); mutableRequest.putRawQueryParameter(SignerConstant.X_AMZ_SIGNATURE, BinaryUtils.toHex(signature)); return mutableRequest; }