public void process()

in refarch/aws-native/streaming/stream-processing/src/main/java/com/amazonaws/ara/http/AWSRequestSigningApacheInterceptor.java [54:110]


    public void process(HttpRequest httpRequest, HttpContext httpContext) throws HttpException, IOException {
        URIBuilder uriBuilder;

        try {
            uriBuilder = new URIBuilder(httpRequest.getRequestLine().getUri());
        } catch (URISyntaxException e) {
            throw new IOException("Invalid URI", e);
        }

        // 1. Create a SignableRequest from the HttpRequest so that we can sign it
        DefaultRequest<Object> signableRequest = new DefaultRequest<>(service);

        HttpHost host = (HttpHost) httpContext.getAttribute(HTTP_TARGET_HOST);
        if (host != null) {
            signableRequest.setEndpoint(URI.create(host.toURI()));
        }

        final HttpMethodName httpMethod = HttpMethodName.fromValue(httpRequest.getRequestLine().getMethod());

        signableRequest.setHttpMethod(httpMethod);

        try {
            signableRequest.setResourcePath(uriBuilder.build().getRawPath());
        } catch (URISyntaxException e) {
            throw new IOException("Invalid URI", e);
        }

        if (httpRequest instanceof HttpEntityEnclosingRequest) {
            final HttpEntityEnclosingRequest httpEntityEnclosingRequest = (HttpEntityEnclosingRequest) httpRequest;
            if (httpEntityEnclosingRequest.getEntity() != null) {
                signableRequest.setContent(httpEntityEnclosingRequest.getEntity().getContent());
            }
        }

        signableRequest.setParameters(nvpToMapParams(uriBuilder.getQueryParams()));
        signableRequest.setHeaders(headerArrayToMap(httpRequest.getAllHeaders()));

        // 2. Sign the SignableRequest
        final AWSCredentialsProvider credentialsProvider = new DefaultAWSCredentialsProviderChain();
        final AWS4Signer signer = new AWS4Signer();
        signer.setRegionName(region);
        signer.setServiceName(service);
        signer.sign(signableRequest, credentialsProvider.getCredentials());

        // 3. Copy everything back to the HttpRequest
        httpRequest.setHeaders(mapToHeaderArray(signableRequest.getHeaders()));

        if (httpRequest instanceof HttpEntityEnclosingRequest) {
            final HttpEntityEnclosingRequest httpEntityEnclosingRequest = (HttpEntityEnclosingRequest) httpRequest;

            if (httpEntityEnclosingRequest.getEntity() != null) {
                final BasicHttpEntity basicHttpEntity = new BasicHttpEntity();
                basicHttpEntity.setContent(signableRequest.getContent());
                httpEntityEnclosingRequest.setEntity(basicHttpEntity);
            }
        }
    }