diff --git a/aws-runtime/aws-config/api/aws-config.api b/aws-runtime/aws-config/api/aws-config.api index 920722e2c99..fbde3c13efd 100644 --- a/aws-runtime/aws-config/api/aws-config.api +++ b/aws-runtime/aws-config/api/aws-config.api @@ -227,7 +227,14 @@ public final class aws/sdk/kotlin/runtime/config/compression/CompressionSettings public final fun getAwsRequestMinCompressionSizeBytes ()Laws/smithy/kotlin/runtime/config/EnvironmentSetting; } -public final class aws/sdk/kotlin/runtime/config/compression/ResolveRequestCompressionKt { +public final class aws/sdk/kotlin/runtime/config/compression/ResolveDisableRequestCompressionKt { + public static final fun resolveDisableRequestCompression (Laws/smithy/kotlin/runtime/util/PlatformProvider;Laws/smithy/kotlin/runtime/util/LazyAsyncValue;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static synthetic fun resolveDisableRequestCompression$default (Laws/smithy/kotlin/runtime/util/PlatformProvider;Laws/smithy/kotlin/runtime/util/LazyAsyncValue;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; +} + +public final class aws/sdk/kotlin/runtime/config/compression/ResolveRequestMinCompressionSizeBytesKt { + public static final fun resolveRequestMinCompressionSizeBytes (Laws/smithy/kotlin/runtime/util/PlatformProvider;Laws/smithy/kotlin/runtime/util/LazyAsyncValue;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static synthetic fun resolveRequestMinCompressionSizeBytes$default (Laws/smithy/kotlin/runtime/util/PlatformProvider;Laws/smithy/kotlin/runtime/util/LazyAsyncValue;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; } public final class aws/sdk/kotlin/runtime/config/endpoints/AccountIdEndpointMode : java/lang/Enum { diff --git a/aws-runtime/aws-config/common/src/aws/sdk/kotlin/runtime/config/AbstractAwsSdkClientFactory.kt b/aws-runtime/aws-config/common/src/aws/sdk/kotlin/runtime/config/AbstractAwsSdkClientFactory.kt index 2af85f63a10..a3c050b1154 100644 --- a/aws-runtime/aws-config/common/src/aws/sdk/kotlin/runtime/config/AbstractAwsSdkClientFactory.kt +++ b/aws-runtime/aws-config/common/src/aws/sdk/kotlin/runtime/config/AbstractAwsSdkClientFactory.kt @@ -6,7 +6,8 @@ package aws.sdk.kotlin.runtime.config import aws.sdk.kotlin.runtime.client.AwsSdkClientConfig -import aws.sdk.kotlin.runtime.config.compression.resolveRequestCompression +import aws.sdk.kotlin.runtime.config.compression.resolveDisableRequestCompression +import aws.sdk.kotlin.runtime.config.compression.resolveRequestMinCompressionSizeBytes import aws.sdk.kotlin.runtime.config.endpoints.resolveUseDualStack import aws.sdk.kotlin.runtime.config.endpoints.resolveUseFips import aws.sdk.kotlin.runtime.config.profile.AwsProfile @@ -80,7 +81,13 @@ public abstract class AbstractAwsSdkClientFactory< config.applicationId = config.applicationId ?: resolveUserAgentAppId(platform, profile) if (config is CompressionClientConfig.Builder) { - config.requestCompression = resolveRequestCompression(platform, profile) + config.requestCompression.disableRequestCompression = + config.requestCompression.disableRequestCompression + ?: resolveDisableRequestCompression(platform, profile) + + config.requestCompression.requestMinCompressionSizeBytes = + config.requestCompression.requestMinCompressionSizeBytes + ?: resolveRequestMinCompressionSizeBytes(platform, profile) } finalizeConfig(builder, sharedConfig, profile) diff --git a/aws-runtime/aws-config/common/src/aws/sdk/kotlin/runtime/config/compression/ResolveDisableRequestCompression.kt b/aws-runtime/aws-config/common/src/aws/sdk/kotlin/runtime/config/compression/ResolveDisableRequestCompression.kt new file mode 100644 index 00000000000..9dafb1b87c9 --- /dev/null +++ b/aws-runtime/aws-config/common/src/aws/sdk/kotlin/runtime/config/compression/ResolveDisableRequestCompression.kt @@ -0,0 +1,25 @@ +/* + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0 + */ +package aws.sdk.kotlin.runtime.config.compression + +import aws.sdk.kotlin.runtime.config.profile.AwsProfile +import aws.sdk.kotlin.runtime.config.profile.disableRequestCompression +import aws.smithy.kotlin.runtime.InternalApi +import aws.smithy.kotlin.runtime.config.resolve +import aws.smithy.kotlin.runtime.util.LazyAsyncValue +import aws.smithy.kotlin.runtime.util.PlatformProvider + +/** + * Attempts to resolve disableRequestCompression from the specified sources. + * @return disableRequestCompression setting if found, the default value if not. + */ +@InternalApi +public suspend fun resolveDisableRequestCompression( + platform: PlatformProvider = PlatformProvider.System, + profile: LazyAsyncValue, +): Boolean = + CompressionSettings.AwsDisableRequestCompression.resolve(platform) + ?: profile.get().disableRequestCompression + ?: false diff --git a/aws-runtime/aws-config/common/src/aws/sdk/kotlin/runtime/config/compression/ResolveRequestCompression.kt b/aws-runtime/aws-config/common/src/aws/sdk/kotlin/runtime/config/compression/ResolveRequestCompression.kt deleted file mode 100644 index b2f7b87d212..00000000000 --- a/aws-runtime/aws-config/common/src/aws/sdk/kotlin/runtime/config/compression/ResolveRequestCompression.kt +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - * SPDX-License-Identifier: Apache-2.0 - */ -package aws.sdk.kotlin.runtime.config.compression - -import aws.sdk.kotlin.runtime.InternalSdkApi -import aws.sdk.kotlin.runtime.config.profile.AwsProfile -import aws.sdk.kotlin.runtime.config.profile.disableRequestCompression -import aws.sdk.kotlin.runtime.config.profile.requestMinCompressionSizeBytes -import aws.smithy.kotlin.runtime.config.resolve -import aws.smithy.kotlin.runtime.http.config.RequestCompressionConfig -import aws.smithy.kotlin.runtime.util.LazyAsyncValue -import aws.smithy.kotlin.runtime.util.PlatformProvider - -/** - * Attempts to resolve disableRequestCompression & requestMinCompressionSizeBytes from the specified sources. - * @return The disableRequestCompression & requestMinCompressionSizeBytes settings if found, the default value for each if not. - */ -@InternalSdkApi -public suspend fun resolveRequestCompression( - platform: PlatformProvider = PlatformProvider.System, - profile: LazyAsyncValue, -): RequestCompressionConfig.Builder = - RequestCompressionConfig.Builder().apply { - disableRequestCompression = - CompressionSettings.AwsDisableRequestCompression.resolve(platform) - ?: profile.get().disableRequestCompression - ?: false - requestMinCompressionSizeBytes = - CompressionSettings.AwsRequestMinCompressionSizeBytes.resolve(platform) - ?: profile.get().requestMinCompressionSizeBytes - ?: 10240 - } diff --git a/aws-runtime/aws-config/common/src/aws/sdk/kotlin/runtime/config/compression/ResolveRequestMinCompressionSizeBytes.kt b/aws-runtime/aws-config/common/src/aws/sdk/kotlin/runtime/config/compression/ResolveRequestMinCompressionSizeBytes.kt new file mode 100644 index 00000000000..63b6f373c06 --- /dev/null +++ b/aws-runtime/aws-config/common/src/aws/sdk/kotlin/runtime/config/compression/ResolveRequestMinCompressionSizeBytes.kt @@ -0,0 +1,25 @@ +/* + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0 + */ +package aws.sdk.kotlin.runtime.config.compression + +import aws.sdk.kotlin.runtime.config.profile.AwsProfile +import aws.sdk.kotlin.runtime.config.profile.requestMinCompressionSizeBytes +import aws.smithy.kotlin.runtime.InternalApi +import aws.smithy.kotlin.runtime.config.resolve +import aws.smithy.kotlin.runtime.util.LazyAsyncValue +import aws.smithy.kotlin.runtime.util.PlatformProvider + +/** + * Attempts to resolve requestMinCompressionSizeBytes from the specified sources. + * @return requestMinCompressionSizeBytes setting if found, the default value if not. + */ +@InternalApi +public suspend fun resolveRequestMinCompressionSizeBytes( + platform: PlatformProvider = PlatformProvider.System, + profile: LazyAsyncValue, +): Long = + CompressionSettings.AwsRequestMinCompressionSizeBytes.resolve(platform) + ?: profile.get().requestMinCompressionSizeBytes + ?: 10240