Skip to content

Commit 84801cb

Browse files
authored
fix: add content-length middleware for operation that has codable conformance (AWS Query) (#465)
1 parent ba690ae commit 84801cb

File tree

2 files changed

+10
-4
lines changed

2 files changed

+10
-4
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -398,7 +398,7 @@ abstract class HttpBindingProtocolGenerator : ProtocolGenerator {
398398
operationMiddleware.appendMiddleware(operation, ContentTypeMiddleware(ctx.model, ctx.symbolProvider, resolver.determineRequestContentType(operation)))
399399
operationMiddleware.appendMiddleware(operation, OperationInputBodyMiddleware(ctx.model, ctx.symbolProvider))
400400

401-
operationMiddleware.appendMiddleware(operation, ContentLengthMiddleware(ctx.model))
401+
operationMiddleware.appendMiddleware(operation, ContentLengthMiddleware(ctx.model, shouldRenderEncodableConformance))
402402

403403
operationMiddleware.appendMiddleware(operation, LoggingMiddleware(ctx.model, ctx.symbolProvider))
404404
operationMiddleware.appendMiddleware(operation, DeserializeMiddleware(ctx.model, ctx.symbolProvider))

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

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import software.amazon.smithy.swift.codegen.middleware.MiddlewarePosition
99
import software.amazon.smithy.swift.codegen.middleware.MiddlewareRenderable
1010
import software.amazon.smithy.swift.codegen.middleware.MiddlewareStep
1111

12-
class ContentLengthMiddleware(val model: Model) : MiddlewareRenderable {
12+
class ContentLengthMiddleware(val model: Model, private val alwaysIntercept: Boolean) : MiddlewareRenderable {
1313

1414
override val name = "ContentLengthMiddleware"
1515

@@ -23,8 +23,14 @@ class ContentLengthMiddleware(val model: Model) : MiddlewareRenderable {
2323
operationStackName: String
2424
) {
2525
val hasHttpBody = MiddlewareShapeUtils.hasHttpBody(model, op)
26-
if (hasHttpBody) {
27-
writer.write("$operationStackName.${middlewareStep.stringValue()}.intercept(position: ${position.stringValue()}, middleware: \$N())", ClientRuntimeTypes.Middleware.ContentLengthMiddleware)
26+
if (hasHttpBody || alwaysIntercept) {
27+
writer.write(
28+
"\$L.\$L.intercept(position: \$L, middleware: \$N())",
29+
operationStackName,
30+
middlewareStep.stringValue(),
31+
position.stringValue(),
32+
ClientRuntimeTypes.Middleware.ContentLengthMiddleware
33+
)
2834
}
2935
}
3036
}

0 commit comments

Comments
 (0)