All Downloads are FREE. Search and download functionalities are using the official Maven repository.

software.amazon.awssdk.services.s3.crt.S3CrtHttpConfiguration Maven / Gradle / Ivy

Go to download

The AWS Java SDK for Amazon S3 module holds the client classes that are used for communicating with Amazon Simple Storage Service

There is a newer version: 2.29.39
Show newest version
/*
 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License").
 * You may not use this file except in compliance with the License.
 * A copy of the License is located at
 *
 *  http://aws.amazon.com/apache2.0
 *
 * or in the "license" file accompanying this file. This file is distributed
 * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
 * express or implied. See the License for the specific language governing
 * permissions and limitations under the License.
 */

package software.amazon.awssdk.services.s3.crt;

import java.time.Duration;
import java.util.Objects;
import java.util.function.Consumer;
import software.amazon.awssdk.annotations.Immutable;
import software.amazon.awssdk.annotations.SdkPublicApi;
import software.amazon.awssdk.annotations.ThreadSafe;
import software.amazon.awssdk.services.s3.S3CrtAsyncClientBuilder;
import software.amazon.awssdk.utils.builder.CopyableBuilder;
import software.amazon.awssdk.utils.builder.ToCopyableBuilder;

/**
 * HTTP configuration for AWS CRT-based S3 client.
 *
 * @see S3CrtAsyncClientBuilder#httpConfiguration
 */
@SdkPublicApi
@Immutable
@ThreadSafe
public final class S3CrtHttpConfiguration implements ToCopyableBuilder {
    private final Duration connectionTimeout;
    private final S3CrtProxyConfiguration proxyConfiguration;
    private final S3CrtConnectionHealthConfiguration healthConfiguration;
    private final Boolean trustAllCertificatesEnabled;

    private S3CrtHttpConfiguration(DefaultBuilder builder) {
        this.connectionTimeout = builder.connectionTimeout;
        this.proxyConfiguration = builder.proxyConfiguration;
        this.healthConfiguration = builder.healthConfiguration;
        this.trustAllCertificatesEnabled = builder.trustAllCertificatesEnabled;
    }

    /**
     * Creates a default builder for {@link S3CrtHttpConfiguration}.
     */
    public static Builder builder() {
        return new S3CrtHttpConfiguration.DefaultBuilder();
    }

    /**
     * Return the amount of time to wait when initially establishing a connection before giving up and timing out.
     */
    public Duration connectionTimeout() {
        return connectionTimeout;
    }

    /**
     * Return the configured {@link S3CrtProxyConfiguration}.
     */
    public S3CrtProxyConfiguration proxyConfiguration() {
        return proxyConfiguration;
    }

    /**
     * Return the configured {@link S3CrtConnectionHealthConfiguration}.
     */
    public S3CrtConnectionHealthConfiguration healthConfiguration() {
        return healthConfiguration;
    }

    /**
     * Return the configured {@link Builder#trustAllCertificatesEnabled}.
     */
    public Boolean trustAllCertificatesEnabled() {
        return trustAllCertificatesEnabled;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) {
            return true;
        }
        if (o == null || getClass() != o.getClass()) {
            return false;
        }

        S3CrtHttpConfiguration that = (S3CrtHttpConfiguration) o;

        if (!Objects.equals(connectionTimeout, that.connectionTimeout)) {
            return false;
        }
        if (!Objects.equals(proxyConfiguration, that.proxyConfiguration)) {
            return false;
        }
        if (!Objects.equals(healthConfiguration, that.healthConfiguration)) {
            return false;
        }
        return Objects.equals(trustAllCertificatesEnabled, that.trustAllCertificatesEnabled);
    }

    @Override
    public int hashCode() {
        int result = connectionTimeout != null ? connectionTimeout.hashCode() : 0;
        result = 31 * result + (proxyConfiguration != null ? proxyConfiguration.hashCode() : 0);
        result = 31 * result + (healthConfiguration != null ? healthConfiguration.hashCode() : 0);
        result = 31 * result + (trustAllCertificatesEnabled != null ? trustAllCertificatesEnabled.hashCode() : 0);
        return result;
    }

    @Override
    public Builder toBuilder() {
        return new S3CrtHttpConfiguration.DefaultBuilder(this);
    }

    public interface Builder extends CopyableBuilder {
        /**
         * The amount of time to wait when initially establishing a connection before giving up and timing out.
         *
         * @param connectionTimeout timeout
         * @return The builder of the method chaining.
         */
        Builder connectionTimeout(Duration connectionTimeout);


        /**
         * 

* Option to disable SSL cert validation and SSL host name verification. * This turns off x.509 validation. * By default, this option is off. * Only enable this option for testing purposes. * @param trustAllCertificatesEnabled True if SSL cert validation is disabled. * @return The builder of the method chaining. */ Builder trustAllCertificatesEnabled(Boolean trustAllCertificatesEnabled); /** * Sets the http proxy configuration to use for this client. * * @param proxyConfiguration The http proxy configuration to use * @return The builder of the method chaining. */ Builder proxyConfiguration(S3CrtProxyConfiguration proxyConfiguration); /** * A convenience method that creates an instance of the {@link S3CrtProxyConfiguration} builder, avoiding the * need to create one manually via {@link S3CrtProxyConfiguration#builder()}. * * @param configurationBuilder The config builder to use * @return The builder of the method chaining. * @see #proxyConfiguration(S3CrtProxyConfiguration) */ Builder proxyConfiguration(Consumer configurationBuilder); /** * Configure the health checks for all connections established by this client. * *

* You can set a throughput threshold for a connection to be considered healthy. If a connection falls below this * threshold ({@link S3CrtConnectionHealthConfiguration#minimumThroughputInBps() }) for the configurable amount of time * ({@link S3CrtConnectionHealthConfiguration#minimumThroughputTimeout()}), then the connection is considered unhealthy * and will be shut down. * * @param healthConfiguration The health checks config to use * @return The builder of the method chaining. */ Builder connectionHealthConfiguration(S3CrtConnectionHealthConfiguration healthConfiguration); /** * A convenience method that creates an instance of the {@link S3CrtConnectionHealthConfiguration} builder, avoiding the * need to create one manually via {@link S3CrtConnectionHealthConfiguration#builder()}. * * @param configurationBuilder The health checks config builder to use * @return The builder of the method chaining. * @see #connectionHealthConfiguration(S3CrtConnectionHealthConfiguration) */ Builder connectionHealthConfiguration(Consumer configurationBuilder); @Override S3CrtHttpConfiguration build(); } private static final class DefaultBuilder implements Builder { private S3CrtConnectionHealthConfiguration healthConfiguration; private Duration connectionTimeout; private Boolean trustAllCertificatesEnabled; private S3CrtProxyConfiguration proxyConfiguration; private DefaultBuilder() { } private DefaultBuilder(S3CrtHttpConfiguration httpConfiguration) { this.healthConfiguration = httpConfiguration.healthConfiguration; this.connectionTimeout = httpConfiguration.connectionTimeout; this.proxyConfiguration = httpConfiguration.proxyConfiguration; this.trustAllCertificatesEnabled = httpConfiguration.trustAllCertificatesEnabled; } @Override public Builder connectionTimeout(Duration connectionTimeout) { this.connectionTimeout = connectionTimeout; return this; } @Override public Builder trustAllCertificatesEnabled(Boolean trustAllCertificatesEnabled) { this.trustAllCertificatesEnabled = trustAllCertificatesEnabled; return this; } @Override public Builder proxyConfiguration(S3CrtProxyConfiguration proxyConfiguration) { this.proxyConfiguration = proxyConfiguration; return this; } @Override public Builder proxyConfiguration(Consumer configurationBuilder) { return proxyConfiguration(S3CrtProxyConfiguration.builder() .applyMutation(configurationBuilder) .build()); } @Override public Builder connectionHealthConfiguration(S3CrtConnectionHealthConfiguration healthConfiguration) { this.healthConfiguration = healthConfiguration; return this; } @Override public Builder connectionHealthConfiguration(Consumer configurationBuilder) { return connectionHealthConfiguration(S3CrtConnectionHealthConfiguration.builder() .applyMutation(configurationBuilder) .build()); } @Override public S3CrtHttpConfiguration build() { return new S3CrtHttpConfiguration(this); } } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy