Skip to content

Commit 9fe7bb6

Browse files
authored
fix: account ID based endpoints (#1535)
1 parent cdbfec9 commit 9fe7bb6

File tree

4 files changed

+49
-2
lines changed

4 files changed

+49
-2
lines changed

codegen/aws-sdk-codegen/src/main/kotlin/aws/sdk/kotlin/codegen/endpoints/AwsBuiltins.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ package aws.sdk.kotlin.codegen.endpoints
66

77
object AwsBuiltins {
88
const val ACCOUNT_ID = "AWS::Auth::AccountId"
9+
const val ACCOUNT_ID_ENDPOINT_MODE = "AWS::Auth::AccountIdEndpointMode"
910
const val USE_FIPS = "AWS::UseFIPS"
1011
const val USE_DUAL_STACK = "AWS::UseDualStack"
1112
const val S3_ACCELERATE = "AWS::S3::Accelerate"

codegen/aws-sdk-codegen/src/main/kotlin/aws/sdk/kotlin/codegen/endpoints/BindAwsEndpointBuiltins.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,14 @@ fun renderBindAwsBuiltins(ctx: ProtocolGenerator.GenerationContext, writer: Kotl
106106
AwsRuntimeTypes.Config.Endpoints.resolveAccountId,
107107
AccountIdEndpointBuiltinCustomization.AccountIdEndpointModeProp.propertyName,
108108
)
109+
110+
AwsBuiltins.ACCOUNT_ID_ENDPOINT_MODE -> {
111+
writer.write(
112+
"#L = config.#L.toString().lowercase()", // Spec specifies these enum values must be lowercase
113+
it.defaultName(),
114+
AccountIdEndpointBuiltinCustomization.AccountIdEndpointModeProp.propertyName,
115+
)
116+
}
109117
}
110118
}
111119
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package aws.sdk.kotlin.codegen.endpoints
2+
3+
import software.amazon.smithy.kotlin.codegen.core.KotlinWriter
4+
import software.amazon.smithy.kotlin.codegen.test.*
5+
import software.amazon.smithy.rulesengine.language.syntax.parameters.Parameter
6+
import software.amazon.smithy.rulesengine.language.syntax.parameters.ParameterType
7+
import kotlin.test.Test
8+
import kotlin.test.assertTrue
9+
10+
class BindAwsEndpointBuiltinsTest {
11+
@Test
12+
fun testRenderAccountIdEndpointModeBuiltin() {
13+
val model = "".prependNamespaceAndService().toSmithyModel()
14+
15+
val ctx = model.newTestContext().generationCtx
16+
val writer = KotlinWriter(TestModelDefault.NAMESPACE)
17+
val parameters = listOf(
18+
Parameter
19+
.builder()
20+
.builtIn(AwsBuiltins.ACCOUNT_ID_ENDPOINT_MODE)
21+
.type(ParameterType.STRING)
22+
.name("accountIdEndpointMode")
23+
.build(),
24+
)
25+
26+
renderBindAwsBuiltins(
27+
ctx,
28+
writer,
29+
parameters,
30+
)
31+
32+
assertTrue(
33+
writer
34+
.rawString()
35+
.contains("accountIdEndpointMode = config.accountIdEndpointMode.toString().lowercase()"),
36+
)
37+
}
38+
}

gradle/libs.versions.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ atomicfu-version = "0.25.0"
1212
binary-compatibility-validator-version = "0.16.3"
1313

1414
# smithy-kotlin codegen and runtime are versioned separately
15-
smithy-kotlin-runtime-version = "1.4.5"
16-
smithy-kotlin-codegen-version = "0.34.5"
15+
smithy-kotlin-runtime-version = "1.4.6"
16+
smithy-kotlin-codegen-version = "0.34.6"
1717

1818
# codegen
1919
smithy-version = "1.53.0"

0 commit comments

Comments
 (0)