Skip to content

Commit 204c7db

Browse files
authored
feat: support ML host customization (#377)
1 parent 96ff1d6 commit 204c7db

File tree

3 files changed

+11
-1
lines changed

3 files changed

+11
-1
lines changed

smithy-swift-codegen/src/main/kotlin/software/amazon/smithy/swift/codegen/integration/HttpProtocolTestGenerator.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,11 @@ class HttpProtocolTestGenerator(
7979

8080
cloned.appendMiddleware(operation, RequestTestEndpointResolverMiddleware(ctx.model, ctx.symbolProvider))
8181
cloned.appendMiddleware(operation, OperationInputUrlPathMiddleware(ctx.model, ctx.symbolProvider, "urlPrefix: urlPrefix"))
82-
cloned.appendMiddleware(operation, OperationInputUrlHostMiddleware(ctx.model, ctx.symbolProvider, "host: hostOnly"))
82+
val hostMiddlewares = cloned.middlewares(operation, MiddlewareStep.INITIALIZESTEP)
83+
.filter { it.name.contains("HostMiddleware") }
84+
if (hostMiddlewares.isEmpty()) {
85+
cloned.appendMiddleware(operation, OperationInputUrlHostMiddleware(ctx.model, ctx.symbolProvider, "host: hostOnly"))
86+
}
8387
}
8488
return cloned
8589
}

smithy-swift-codegen/src/main/kotlin/software/amazon/smithy/swift/codegen/middleware/OperationMiddleware.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ interface OperationMiddleware {
77
fun appendMiddleware(operation: OperationShape, renderableMiddleware: MiddlewareRenderable)
88
fun prependMiddleware(operation: OperationShape, renderableMiddleware: MiddlewareRenderable)
99
fun removeMiddleware(operation: OperationShape, step: MiddlewareStep, middlewareName: String)
10+
fun middlewares(operation: OperationShape, step: MiddlewareStep): List<MiddlewareRenderable>
1011

1112
fun clone(): OperationMiddleware
1213

smithy-swift-codegen/src/main/kotlin/software/amazon/smithy/swift/codegen/middleware/OperationMiddlewareGenerator.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,11 @@ open class OperationMiddlewareGenerator(val mutableHashMap: MutableMap<Operation
2626
}
2727
}
2828

29+
override fun middlewares(operation: OperationShape, step: MiddlewareStep): List<MiddlewareRenderable> {
30+
val stack = middlewareMap.getOrPut(operation) { MiddlewareStack() }
31+
return resolveStep(stack, step).map { it }
32+
}
33+
2934
override fun clone(): OperationMiddleware {
3035
val copy: MutableMap<OperationShape, MiddlewareStack> = mutableMapOf()
3136
middlewareMap.forEach { (shape, stack) ->

0 commit comments

Comments
 (0)