Skip to content

Commit 8f65c72

Browse files
committed
fix: pr feedback
1 parent 7cbe93d commit 8f65c72

File tree

6 files changed

+50
-42
lines changed

6 files changed

+50
-42
lines changed

aws-runtime/aws-config/api/aws-config.api

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -476,9 +476,9 @@ public final class aws/sdk/kotlin/runtime/config/profile/AwsProfileKt {
476476
public static synthetic fun getLongOrNull$default (Laws/sdk/kotlin/runtime/config/profile/ConfigSection;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Ljava/lang/Long;
477477
public static final fun getMaxAttempts (Laws/sdk/kotlin/runtime/config/profile/ConfigSection;)Ljava/lang/Integer;
478478
public static final fun getRegion (Laws/sdk/kotlin/runtime/config/profile/ConfigSection;)Ljava/lang/String;
479-
public static final fun getRequestChecksumCalculation (Laws/sdk/kotlin/runtime/config/profile/ConfigSection;)Ljava/lang/String;
479+
public static final fun getRequestChecksumCalculation (Laws/sdk/kotlin/runtime/config/profile/ConfigSection;)Laws/smithy/kotlin/runtime/client/config/RequestHttpChecksumConfig;
480480
public static final fun getRequestMinCompressionSizeBytes (Laws/sdk/kotlin/runtime/config/profile/ConfigSection;)Ljava/lang/Long;
481-
public static final fun getResponseChecksumValidation (Laws/sdk/kotlin/runtime/config/profile/ConfigSection;)Ljava/lang/String;
481+
public static final fun getResponseChecksumValidation (Laws/sdk/kotlin/runtime/config/profile/ConfigSection;)Laws/smithy/kotlin/runtime/client/config/ResponseHttpChecksumConfig;
482482
public static final fun getRetryMode (Laws/sdk/kotlin/runtime/config/profile/ConfigSection;)Laws/smithy/kotlin/runtime/client/config/RetryMode;
483483
public static final fun getRoleArn (Laws/sdk/kotlin/runtime/config/profile/ConfigSection;)Ljava/lang/String;
484484
public static final fun getSdkUserAgentAppId (Laws/sdk/kotlin/runtime/config/profile/ConfigSection;)Ljava/lang/String;

aws-runtime/aws-config/common/src/aws/sdk/kotlin/runtime/config/AwsSdkSetting.kt

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ import aws.sdk.kotlin.runtime.InternalSdkApi
99
import aws.sdk.kotlin.runtime.config.endpoints.AccountIdEndpointMode
1010
import aws.sdk.kotlin.runtime.http.AWS_APP_ID_ENV
1111
import aws.sdk.kotlin.runtime.http.AWS_APP_ID_PROP
12+
import aws.smithy.kotlin.runtime.client.config.RequestHttpChecksumConfig
13+
import aws.smithy.kotlin.runtime.client.config.ResponseHttpChecksumConfig
1214
import aws.smithy.kotlin.runtime.client.config.RetryMode
1315
import aws.smithy.kotlin.runtime.config.*
1416
import aws.smithy.kotlin.runtime.net.url.Url
@@ -212,14 +214,14 @@ public object AwsSdkSetting {
212214
/**
213215
* Configures request checksum calculation
214216
*/
215-
public val AwsRequestChecksumCalculation: EnvironmentSetting<String> =
216-
strEnvSetting("aws.requestChecksumCalculation", "AWS_REQUEST_CHECKSUM_CALCULATION")
217+
public val AwsRequestChecksumCalculation: EnvironmentSetting<RequestHttpChecksumConfig> =
218+
enumEnvSetting<RequestHttpChecksumConfig>("aws.requestChecksumCalculation", "AWS_REQUEST_CHECKSUM_CALCULATION")
217219

218220
/**
219221
* Configures response checksum validation
220222
*/
221-
public val AwsResponseChecksumValidation: EnvironmentSetting<String> =
222-
strEnvSetting("aws.responseChecksumValidation", "AWS_RESPONSE_CHECKSUM_VALIDATION")
223+
public val AwsResponseChecksumValidation: EnvironmentSetting<ResponseHttpChecksumConfig> =
224+
enumEnvSetting<ResponseHttpChecksumConfig>("aws.responseChecksumValidation", "AWS_RESPONSE_CHECKSUM_VALIDATION")
223225
}
224226

225227
/**
Lines changed: 4 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package aws.sdk.kotlin.runtime.config.checksums
22

3-
import aws.sdk.kotlin.runtime.ConfigurationException
43
import aws.sdk.kotlin.runtime.InternalSdkApi
54
import aws.sdk.kotlin.runtime.config.AwsSdkSetting
65
import aws.sdk.kotlin.runtime.config.profile.AwsProfile
@@ -20,20 +19,8 @@ import aws.smithy.kotlin.runtime.util.PlatformProvider
2019
public suspend fun resolveRequestChecksumCalculation(
2120
platform: PlatformProvider = PlatformProvider.System,
2221
profile: LazyAsyncValue<AwsProfile>,
23-
): RequestHttpChecksumConfig {
24-
val unparsedString = AwsSdkSetting.AwsRequestChecksumCalculation.resolve(platform) ?: profile.get().requestChecksumCalculation
25-
return parseRequestHttpChecksumConfig(unparsedString)
26-
}
27-
28-
private fun parseRequestHttpChecksumConfig(unparsedString: String?): RequestHttpChecksumConfig =
29-
when (unparsedString?.uppercase()) {
30-
null -> RequestHttpChecksumConfig.WHEN_SUPPORTED
31-
"WHEN_SUPPORTED" -> RequestHttpChecksumConfig.WHEN_SUPPORTED
32-
"WHEN_REQUIRED" -> RequestHttpChecksumConfig.WHEN_REQUIRED
33-
else -> throw ConfigurationException(
34-
"'$unparsedString' is not a valid value for 'requestChecksumCalculation'. Valid values are: ${RequestHttpChecksumConfig.entries}",
35-
)
36-
}
22+
): RequestHttpChecksumConfig =
23+
AwsSdkSetting.AwsRequestChecksumCalculation.resolve(platform) ?: profile.get().requestChecksumCalculation ?: RequestHttpChecksumConfig.WHEN_SUPPORTED
3724

3825
/**
3926
* Attempts to resolve responseChecksumValidation from the specified sources.
@@ -43,17 +30,5 @@ private fun parseRequestHttpChecksumConfig(unparsedString: String?): RequestHttp
4330
public suspend fun resolveResponseChecksumValidation(
4431
platform: PlatformProvider = PlatformProvider.System,
4532
profile: LazyAsyncValue<AwsProfile>,
46-
): ResponseHttpChecksumConfig {
47-
val unparsedString = AwsSdkSetting.AwsResponseChecksumValidation.resolve(platform) ?: profile.get().responseChecksumValidation
48-
return parseResponseHttpChecksumConfig(unparsedString)
49-
}
50-
51-
private fun parseResponseHttpChecksumConfig(unparsedString: String?): ResponseHttpChecksumConfig =
52-
when (unparsedString?.uppercase()) {
53-
null -> ResponseHttpChecksumConfig.WHEN_SUPPORTED
54-
"WHEN_SUPPORTED" -> ResponseHttpChecksumConfig.WHEN_SUPPORTED
55-
"WHEN_REQUIRED" -> ResponseHttpChecksumConfig.WHEN_REQUIRED
56-
else -> throw ConfigurationException(
57-
"'$unparsedString' is not a valid value for 'responseChecksumValidation'. Valid values are: ${ResponseHttpChecksumConfig.entries}",
58-
)
59-
}
33+
): ResponseHttpChecksumConfig =
34+
AwsSdkSetting.AwsResponseChecksumValidation.resolve(platform) ?: profile.get().responseChecksumValidation ?: ResponseHttpChecksumConfig.WHEN_SUPPORTED

aws-runtime/aws-config/common/src/aws/sdk/kotlin/runtime/config/profile/AwsProfile.kt

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ package aws.sdk.kotlin.runtime.config.profile
88
import aws.sdk.kotlin.runtime.ConfigurationException
99
import aws.sdk.kotlin.runtime.InternalSdkApi
1010
import aws.sdk.kotlin.runtime.config.endpoints.AccountIdEndpointMode
11+
import aws.smithy.kotlin.runtime.client.config.RequestHttpChecksumConfig
12+
import aws.smithy.kotlin.runtime.client.config.ResponseHttpChecksumConfig
1113
import aws.smithy.kotlin.runtime.client.config.RetryMode
1214
import aws.smithy.kotlin.runtime.net.url.Url
1315

@@ -171,15 +173,15 @@ public val AwsProfile.sigV4aSigningRegionSet: String?
171173
* Configures request checksum calculation
172174
*/
173175
@InternalSdkApi
174-
public val AwsProfile.requestChecksumCalculation: String?
175-
get() = getOrNull("request_checksum_calculation")
176+
public val AwsProfile.requestChecksumCalculation: RequestHttpChecksumConfig?
177+
get() = getOrNull("request_checksum_calculation")?.parseRequestHttpChecksumConfig()
176178

177179
/**
178180
* Configures response checksum validation
179181
*/
180182
@InternalSdkApi
181-
public val AwsProfile.responseChecksumValidation: String?
182-
get() = getOrNull("response_checksum_validation")
183+
public val AwsProfile.responseChecksumValidation: ResponseHttpChecksumConfig?
184+
get() = getOrNull("response_checksum_validation")?.parseResponseHttpChecksumConfig()
183185

184186
/**
185187
* Parse a config value as a boolean, ignoring case.
@@ -214,6 +216,32 @@ public fun AwsProfile.getLongOrNull(key: String, subKey: String? = null): Long?
214216
)
215217
}
216218

219+
/**
220+
* Parse a string value as [ResponseHttpChecksumConfig]
221+
*/
222+
private fun String?.parseResponseHttpChecksumConfig(): ResponseHttpChecksumConfig? =
223+
when (this?.uppercase()) {
224+
null -> null
225+
"WHEN_SUPPORTED" -> ResponseHttpChecksumConfig.WHEN_SUPPORTED
226+
"WHEN_REQUIRED" -> ResponseHttpChecksumConfig.WHEN_REQUIRED
227+
else -> throw ConfigurationException(
228+
"'$this' is not a valid value for 'response_checksum_validation'. Valid values are: ${ResponseHttpChecksumConfig.entries}",
229+
)
230+
}
231+
232+
/**
233+
* Parse a string value as [RequestHttpChecksumConfig]
234+
*/
235+
private fun String?.parseRequestHttpChecksumConfig(): RequestHttpChecksumConfig? =
236+
when (this?.uppercase()) {
237+
null -> null
238+
"WHEN_SUPPORTED" -> RequestHttpChecksumConfig.WHEN_SUPPORTED
239+
"WHEN_REQUIRED" -> RequestHttpChecksumConfig.WHEN_REQUIRED
240+
else -> throw ConfigurationException(
241+
"'$this' is not a valid value for 'request_checksum_calculation'. Valid values are: ${RequestHttpChecksumConfig.entries}",
242+
)
243+
}
244+
217245
internal fun AwsProfile.getUrlOrNull(key: String, subKey: String? = null): Url? =
218246
getOrNull(key, subKey)?.let {
219247
try {

aws-runtime/aws-http/api/aws-http.api

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@ public final class aws/sdk/kotlin/runtime/http/interceptors/BusinessMetricsInter
198198

199199
public final class aws/sdk/kotlin/runtime/http/interceptors/IgnoreCompositeFlexibleChecksumResponseInterceptor : aws/smithy/kotlin/runtime/http/interceptors/FlexibleChecksumsResponseInterceptor {
200200
public fun <init> (ZLaws/smithy/kotlin/runtime/client/config/ResponseHttpChecksumConfig;)V
201-
public fun ignoreChecksum (Ljava/lang/String;)Z
201+
public fun ignoreChecksum (Ljava/lang/String;Laws/smithy/kotlin/runtime/telemetry/logging/Logger;)Z
202202
}
203203

204204
public final class aws/sdk/kotlin/runtime/http/interceptors/UnsupportedSigningAlgorithmInterceptor : aws/smithy/kotlin/runtime/client/Interceptor {

aws-runtime/aws-http/common/src/aws/sdk/kotlin/runtime/http/interceptors/IgnoreCompositeFlexibleChecksumResponseInterceptor.kt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package aws.sdk.kotlin.runtime.http.interceptors
22

33
import aws.smithy.kotlin.runtime.client.config.ResponseHttpChecksumConfig
44
import aws.smithy.kotlin.runtime.http.interceptors.FlexibleChecksumsResponseInterceptor
5+
import aws.smithy.kotlin.runtime.telemetry.logging.Logger
56

67
/**
78
* Variant of the [FlexibleChecksumsResponseInterceptor] where composite checksums are not validated
@@ -13,8 +14,10 @@ public class IgnoreCompositeFlexibleChecksumResponseInterceptor(
1314
responseValidationRequired,
1415
responseChecksumValidation,
1516
) {
16-
override fun ignoreChecksum(checksum: String): Boolean =
17-
checksum.isCompositeChecksum()
17+
override fun ignoreChecksum(checksum: String, logger: Logger): Boolean =
18+
checksum.isCompositeChecksum().also { compositeChecksum ->
19+
if (compositeChecksum) logger.info { "Checksum validation was skipped because it was a composite checksum" }
20+
}
1821
}
1922

2023
/**

0 commit comments

Comments
 (0)