in src/main/java/software/aws/neptune/sparql/SparqlQueryExecutor.java [137:175]
private static HttpClient createV4SigningClient(final SparqlConnectionProperties properties) throws SQLException {
final AWSCredentialsProvider awsCredentialsProvider = new DefaultAWSCredentialsProviderChain();
final NeptuneApacheHttpSigV4Signer v4Signer;
final HttpClient v4SigningClient;
try {
v4Signer = new NeptuneApacheHttpSigV4Signer(properties.getServiceRegion(), awsCredentialsProvider);
v4SigningClient =
HttpClientBuilder.create().addInterceptorLast(new HttpRequestInterceptor() {
@SneakyThrows
@Override
public void process(final HttpRequest req, final HttpContext ctx) {
if (req instanceof HttpUriRequest) {
final HttpUriRequest httpUriReq = (HttpUriRequest) req;
try {
v4Signer.signRequest(httpUriReq);
} catch (final NeptuneSigV4SignerException e) {
throw SqlError.createSQLException(LOGGER,
SqlState.INVALID_AUTHORIZATION_SPECIFICATION,
SqlError.CONN_FAILED, e);
}
} else {
throw SqlError.createSQLException(LOGGER,
SqlState.INVALID_AUTHORIZATION_SPECIFICATION,
SqlError.UNSUPPORTED_REQUEST, "Not an HttpUriRequest");
}
}
}).build();
} catch (final NeptuneSigV4SignerException e) {
throw SqlError.createSQLException(
LOGGER,
SqlState.INVALID_AUTHORIZATION_SPECIFICATION,
SqlError.CONN_FAILED, e);
}
return v4SigningClient;
}