private static ToolkitTelemetryClient createDefaultTelemetryClient()

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();
    }