private T withCloudFrontClient()

in s3-artifact-storage-server/src/main/java/jetbrains/buildServer/artifacts/s3/amazonClient/impl/AmazonS3ProviderImpl.java [286:327]


  private <T, E extends Exception> T withCloudFrontClient(@NotNull final Map<String, String> params,
                                                          @NotNull final String projectId,
                                                          @NotNull final WithCloudFrontClient<T, E> withClient,
                                                          final boolean shutdownImmediately) throws E, ConnectionCredentialsException {
    if (ParamUtil.withAwsConnectionId(params)) {
      AwsConnectionCredentials awsConnectionCredentials = getAwsConnectionCredentials(params, projectId);

      final CloudFrontClient client = CloudFrontClient.builder()
        .defaultsMode(DefaultsMode.STANDARD)
        .region(Region.of(awsConnectionCredentials.getAwsRegion()))
        .httpClientBuilder(ClientConfigurationBuilder.createClientBuilder("cloudFront"))
        .overrideConfiguration(ClientConfigurationBuilder.clientOverrideConfigurationBuilder().build())
        .credentialsProvider(awsConnectionCredentials.toAWSCredentialsProvider())
        .build();
      try {
        return withClient.execute(client);
      } finally {
        if (shutdownImmediately) {
          S3Util.shutdownClient(client);
        }
      }
    } else {
      try {
        return AWSCommonParams.withAWSClients(params, clients -> {
          clients.setS3SignerType(S3_SIGNER_TYPE);
          clients.setDisablePathStyleAccess(disablePathStyleAccess(params));
          clients.setAccelerateModeEnabled(isAccelerateModeEnabled(params));
          patchAWSClientsSsl(clients, params);
          final CloudFrontClient client = clients.createCloudFrontClient();
          try {
            return withClient.execute(client);
          } finally {
            if (shutdownImmediately) {
              S3Util.shutdownClient(client);
            }
          }
        });
      } catch (Throwable t) {
        throw new ConnectionCredentialsException(new Exception(t));
      }
    }
  }