in plugin/src/software/aws/toolkits/eclipse/amazonq/telemetry/service/DefaultTelemetryService.java [128:174]
private static ToolkitTelemetryClient createDefaultTelemetryClient(final Region region, final String endpoint, final String identityPool) {
SSLContext sslContext = ProxyUtil.getCustomSslContext();
if (sslContext == null) {
try {
sslContext = SSLContext.getInstance("TLSv1.2");
sslContext.init(null, null, null);
} catch (Exception e) {
throw new RuntimeException("Failed to create SSLContext for TLS 1.2", e);
}
}
SSLConnectionSocketFactory sslSocketFactory = new SSLConnectionSocketFactory(
sslContext,
new String[]{"TLSv1.2"},
null,
SSLConnectionSocketFactory.getDefaultHostnameVerifier()
);
var proxyUrl = ProxyUtil.getHttpsProxyUrlForEndpoint(endpoint);
var httpClientBuilder = ApacheHttpClient.builder();
if (!StringUtils.isEmpty(proxyUrl)) {
httpClientBuilder.proxyConfiguration(ProxyConfiguration.builder()
.endpoint(URI.create(proxyUrl))
.build());
}
httpClientBuilder.socketFactory(sslSocketFactory);
SdkHttpClient sdkHttpClient = httpClientBuilder
.credentialsProvider(new SystemDefaultCredentialsProvider())
.build();
CognitoIdentityClient cognitoClient = CognitoIdentityClient.builder()
.credentialsProvider(AnonymousCredentialsProvider.create())
.region(region)
.httpClient(sdkHttpClient)
.overrideConfiguration(builder -> {
nullDefaultProfileFile(builder);
builder.retryStrategy(RetryMode.STANDARD);
}).build();
AwsCredentialsProvider credentialsProvider = new AwsCognitoCredentialsProvider(identityPool, cognitoClient);
return ToolkitTelemetryClient.builder()
.region(region)
.httpClient(sdkHttpClient)
.credentialsProvider(credentialsProvider)
.endpointOverride(URI.create(endpoint))
.overrideConfiguration(o -> o.retryStrategy(RetryMode.STANDARD))
.build();
}