@@ -83,14 +83,7 @@ public val AwsProfile.credentialProcess: String?
8383 */
8484@InternalSdkApi
8585public val AwsProfile .retryMode: RetryMode ?
86- get() = getOrNull(" retry_mode" )?.run {
87- RetryMode .values().firstOrNull { it.name.equals(this , ignoreCase = true ) }
88- ? : throw ConfigurationException (
89- " retry_mode $this is not supported, should be one of: ${
90- RetryMode .values().joinToString(" , " ) { it.name.lowercase() }
91- } " ,
92- )
93- }
86+ get() = getEnumOrNull<RetryMode >(" retry_mode" )
9487
9588/* *
9689 * Whether service clients should make requests to the FIPS endpoint variant.
@@ -139,14 +132,7 @@ public val AwsProfile.sdkUserAgentAppId: String?
139132 */
140133@InternalSdkApi
141134public val AwsProfile .accountIdEndpointMode: AccountIdEndpointMode ?
142- get() = getOrNull(" account_id_endpoint_mode" )?.run {
143- AccountIdEndpointMode .values().firstOrNull { it.name.equals(this , ignoreCase = true ) }
144- ? : throw ConfigurationException (
145- " account_id_endpoint_mode $this is not supported, should be one of: ${
146- AccountIdEndpointMode .values().joinToString(" , " ) { it.name.lowercase() }
147- } " ,
148- )
149- }
135+ get() = getEnumOrNull<AccountIdEndpointMode >(" account_id_endpoint_mode" )
150136
151137/* *
152138 * Determines when a request should be compressed or not
@@ -174,30 +160,14 @@ public val AwsProfile.sigV4aSigningRegionSet: String?
174160 */
175161@InternalSdkApi
176162public val AwsProfile .requestChecksumCalculation: RequestHttpChecksumConfig ?
177- get() = getOrNull(" request_checksum_calculation" )?.run {
178- RequestHttpChecksumConfig
179- .values()
180- .firstOrNull { it.name.equals(this , ignoreCase = true ) }
181- ? : throw ConfigurationException (
182- " request_checksum_calculation $this is not supported, should be one of: " +
183- RequestHttpChecksumConfig .values().joinToString(" , " ) { it.name.lowercase() },
184- )
185- }
163+ get() = getEnumOrNull<RequestHttpChecksumConfig >(" request_checksum_calculation" )
186164
187165/* *
188166 * Configures response checksum validation
189167 */
190168@InternalSdkApi
191169public val AwsProfile .responseChecksumValidation: ResponseHttpChecksumConfig ?
192- get() = getOrNull(" response_checksum_validation" )?.run {
193- ResponseHttpChecksumConfig
194- .values()
195- .firstOrNull { it.name.equals(this , ignoreCase = true ) }
196- ? : throw ConfigurationException (
197- " response_checksum_validation $this is not supported, should be one of: " +
198- ResponseHttpChecksumConfig .values().joinToString(" , " ) { it.name.lowercase() },
199- )
200- }
170+ get() = getEnumOrNull<ResponseHttpChecksumConfig >(" response_checksum_validation" )
201171
202172/* *
203173 * Parse a config value as a boolean, ignoring case.
@@ -232,6 +202,21 @@ public fun AwsProfile.getLongOrNull(key: String, subKey: String? = null): Long?
232202 )
233203 }
234204
205+ /* *
206+ * Parse a config value as an enum.
207+ */
208+ @InternalSdkApi
209+ public inline fun <reified T : Enum <T >> AwsProfile.getEnumOrNull (key : String , subKey : String? = null): T ? =
210+ getOrNull(key, subKey)?.let { value ->
211+ enumValues<T >().firstOrNull {
212+ it.name.equals(value, ignoreCase = true )
213+ } ? : throw ConfigurationException (
214+ " Value '$value ' is not supported, should be one of: ${
215+ enumValues<T >().joinToString(" , " ) { it.name.lowercase() }
216+ } " ,
217+ )
218+ }
219+
235220internal fun AwsProfile.getUrlOrNull (key : String , subKey : String? = null): Url ? =
236221 getOrNull(key, subKey)?.let {
237222 try {
0 commit comments