Skip to content

Commit 939b6ef

Browse files
authored
feat: Expose sigv4 config for presigner (#352)
1 parent 7fa6fbe commit 939b6ef

15 files changed

+49
-39
lines changed

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import software.amazon.smithy.swift.codegen.SwiftDependency
1515
import software.amazon.smithy.swift.codegen.SwiftTypes
1616
import software.amazon.smithy.swift.codegen.SwiftWriter
1717
import software.amazon.smithy.swift.codegen.middleware.MiddlewareExecutionGenerator
18+
import software.amazon.smithy.swift.codegen.middleware.MiddlewareRenderableExecutionContext
1819
import software.amazon.smithy.swift.codegen.middleware.OperationMiddleware
1920
import software.amazon.smithy.swift.codegen.model.camelCaseName
2021
import software.amazon.smithy.swift.codegen.model.capitalizedName
@@ -63,7 +64,7 @@ open class HttpProtocolClientGenerator(
6364
ServiceGenerator.renderOperationDefinition(model, symbolProvider, writer, operationsIndex, it)
6465
writer.openBlock("{", "}") {
6566
val operationStackName = "operation"
66-
val generator = MiddlewareExecutionGenerator(ctx, writer, httpBindingResolver, httpProtocolCustomizable, operationMiddleware, operationStackName)
67+
val generator = MiddlewareExecutionGenerator(ctx, writer, httpBindingResolver, httpProtocolCustomizable, operationMiddleware, operationStackName, MiddlewareRenderableExecutionContext.CLIENT)
6768
generator.render(it) { writer, labelMemberName ->
6869
writer.write("completion(.failure(.client(\$N.serializationFailed(\"uri component $labelMemberName unexpectedly nil\"))))", ClientRuntimeTypes.Core.ClientError)
6970
writer.write("return")

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

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import software.amazon.smithy.model.traits.IdempotencyTokenTrait
1414
import software.amazon.smithy.protocoltests.traits.HttpRequestTestCase
1515
import software.amazon.smithy.swift.codegen.ShapeValueGenerator
1616
import software.amazon.smithy.swift.codegen.SwiftWriter
17+
import software.amazon.smithy.swift.codegen.middleware.MiddlewareRenderableExecutionContext
1718
import software.amazon.smithy.swift.codegen.middleware.MiddlewareStep
1819
import software.amazon.smithy.swift.codegen.model.RecursiveShapeBoxer
1920
import software.amazon.smithy.swift.codegen.model.capitalizedName
@@ -101,11 +102,11 @@ open class HttpProtocolUnitTestRequestGenerator protected constructor(builder: B
101102
operationMiddleware.removeMiddleware(operation, MiddlewareStep.DESERIALIZESTEP, "DeserializeMiddleware")
102103
operationMiddleware.removeMiddleware(operation, MiddlewareStep.DESERIALIZESTEP, "LoggingMiddleware")
103104

104-
operationMiddleware.renderMiddleware(model, symbolProvider, writer, operation, operationStack, MiddlewareStep.INITIALIZESTEP)
105-
operationMiddleware.renderMiddleware(model, symbolProvider, writer, operation, operationStack, MiddlewareStep.BUILDSTEP)
106-
operationMiddleware.renderMiddleware(model, symbolProvider, writer, operation, operationStack, MiddlewareStep.SERIALIZESTEP)
107-
operationMiddleware.renderMiddleware(model, symbolProvider, writer, operation, operationStack, MiddlewareStep.FINALIZESTEP)
108-
operationMiddleware.renderMiddleware(model, symbolProvider, writer, operation, operationStack, MiddlewareStep.DESERIALIZESTEP)
105+
operationMiddleware.renderMiddleware(model, symbolProvider, writer, operation, operationStack, MiddlewareStep.INITIALIZESTEP, MiddlewareRenderableExecutionContext.UNIT_TEST_REQUEST)
106+
operationMiddleware.renderMiddleware(model, symbolProvider, writer, operation, operationStack, MiddlewareStep.BUILDSTEP, MiddlewareRenderableExecutionContext.UNIT_TEST_REQUEST)
107+
operationMiddleware.renderMiddleware(model, symbolProvider, writer, operation, operationStack, MiddlewareStep.SERIALIZESTEP, MiddlewareRenderableExecutionContext.UNIT_TEST_REQUEST)
108+
operationMiddleware.renderMiddleware(model, symbolProvider, writer, operation, operationStack, MiddlewareStep.FINALIZESTEP, MiddlewareRenderableExecutionContext.UNIT_TEST_REQUEST)
109+
operationMiddleware.renderMiddleware(model, symbolProvider, writer, operation, operationStack, MiddlewareStep.DESERIALIZESTEP, MiddlewareRenderableExecutionContext.UNIT_TEST_REQUEST)
109110
renderMockDeserializeMiddleware(test, operationStack, inputSymbol, outputSymbol, outputErrorName, inputShape)
110111

111112
writer.openBlock("_ = operationStack.handleMiddleware(context: context, input: input, next: MockHandler(){ (context, request) in ", "})") {

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import software.amazon.smithy.swift.codegen.ClientRuntimeTypes
77
import software.amazon.smithy.swift.codegen.SwiftWriter
88
import software.amazon.smithy.swift.codegen.middleware.MiddlewarePosition
99
import software.amazon.smithy.swift.codegen.middleware.MiddlewareRenderable
10+
import software.amazon.smithy.swift.codegen.middleware.MiddlewareRenderableExecutionContext
1011
import software.amazon.smithy.swift.codegen.middleware.MiddlewareStep
1112

1213
class ContentLengthMiddleware : MiddlewareRenderable {
@@ -22,7 +23,8 @@ class ContentLengthMiddleware : MiddlewareRenderable {
2223
symbolProvider: SymbolProvider,
2324
writer: SwiftWriter,
2425
op: OperationShape,
25-
operationStackName: String
26+
operationStackName: String,
27+
executionContext: MiddlewareRenderableExecutionContext
2628
) {
2729
writer.write("$operationStackName.${middlewareStep.stringValue()}.intercept(position: ${position.stringValue()}, middleware: \$N())", ClientRuntimeTypes.Middleware.ContentLengthMiddleware)
2830
}

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import software.amazon.smithy.swift.codegen.ServiceGenerator
99
import software.amazon.smithy.swift.codegen.SwiftWriter
1010
import software.amazon.smithy.swift.codegen.middleware.MiddlewarePosition
1111
import software.amazon.smithy.swift.codegen.middleware.MiddlewareRenderable
12+
import software.amazon.smithy.swift.codegen.middleware.MiddlewareRenderableExecutionContext
1213
import software.amazon.smithy.swift.codegen.middleware.MiddlewareStep
1314
import software.amazon.smithy.swift.codegen.model.hasTrait
1415

@@ -19,7 +20,7 @@ class ContentMD5Middleware : MiddlewareRenderable {
1920

2021
override val position = MiddlewarePosition.BEFORE
2122

22-
override fun render(model: Model, symbolProvider: SymbolProvider, writer: SwiftWriter, op: OperationShape, operationStackName: String) {
23+
override fun render(model: Model, symbolProvider: SymbolProvider, writer: SwiftWriter, op: OperationShape, operationStackName: String, executionContext: MiddlewareRenderableExecutionContext) {
2324
if (op.hasTrait<HttpChecksumRequiredTrait>()) {
2425
val outputShapeName = ServiceGenerator.getOperationOutputShapeName(symbolProvider, model, op)
2526
val outputErrorName = ServiceGenerator.getOperationErrorShapeName(op)

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import software.amazon.smithy.swift.codegen.ServiceGenerator
77
import software.amazon.smithy.swift.codegen.SwiftWriter
88
import software.amazon.smithy.swift.codegen.middleware.MiddlewarePosition
99
import software.amazon.smithy.swift.codegen.middleware.MiddlewareRenderable
10+
import software.amazon.smithy.swift.codegen.middleware.MiddlewareRenderableExecutionContext
1011
import software.amazon.smithy.swift.codegen.middleware.MiddlewareStep
1112

1213
class ContentTypeMiddleware(val defaultContentType: String) : MiddlewareRenderable {
@@ -22,7 +23,8 @@ class ContentTypeMiddleware(val defaultContentType: String) : MiddlewareRenderab
2223
symbolProvider: SymbolProvider,
2324
writer: SwiftWriter,
2425
op: OperationShape,
25-
operationStackName: String
26+
operationStackName: String,
27+
executionContext: MiddlewareRenderableExecutionContext
2628
) {
2729
val inputShapeName = ServiceGenerator.getOperationInputShapeName(symbolProvider, model, op)
2830
val outputShapeName = ServiceGenerator.getOperationOutputShapeName(symbolProvider, model, op)

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import software.amazon.smithy.swift.codegen.ClientRuntimeTypes
77
import software.amazon.smithy.swift.codegen.SwiftWriter
88
import software.amazon.smithy.swift.codegen.middleware.MiddlewarePosition
99
import software.amazon.smithy.swift.codegen.middleware.MiddlewareRenderable
10+
import software.amazon.smithy.swift.codegen.middleware.MiddlewareRenderableExecutionContext
1011
import software.amazon.smithy.swift.codegen.middleware.MiddlewareStep
1112

1213
class DeserializeMiddleware : MiddlewareRenderable {
@@ -22,7 +23,8 @@ class DeserializeMiddleware : MiddlewareRenderable {
2223
symbolProvider: SymbolProvider,
2324
writer: SwiftWriter,
2425
op: OperationShape,
25-
operationStackName: String
26+
operationStackName: String,
27+
executionContext: MiddlewareRenderableExecutionContext
2628
) {
2729
writer.write("$operationStackName.${middlewareStep.stringValue()}.intercept(position: ${position.stringValue()}, middleware: \$N())", ClientRuntimeTypes.Middleware.DeserializeMiddleware)
2830
}

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,15 @@ import software.amazon.smithy.swift.codegen.SwiftTypes
1515
import software.amazon.smithy.swift.codegen.SwiftWriter
1616
import software.amazon.smithy.swift.codegen.middleware.MiddlewarePosition
1717
import software.amazon.smithy.swift.codegen.middleware.MiddlewareRenderable
18+
import software.amazon.smithy.swift.codegen.middleware.MiddlewareRenderableExecutionContext
1819
import software.amazon.smithy.swift.codegen.middleware.MiddlewareStep
1920
import software.amazon.smithy.swift.codegen.model.hasTrait
2021

2122
class IdempotencyTokenMiddleware : MiddlewareRenderable {
2223
override val name = "IdempotencyTokenMiddleware"
2324
override val middlewareStep = MiddlewareStep.INITIALIZESTEP
2425
override val position = MiddlewarePosition.AFTER
25-
override fun render(model: Model, symbolProvider: SymbolProvider, writer: SwiftWriter, op: OperationShape, operationStackName: String) {
26+
override fun render(model: Model, symbolProvider: SymbolProvider, writer: SwiftWriter, op: OperationShape, operationStackName: String, executionContext: MiddlewareRenderableExecutionContext) {
2627

2728
val inputShape = model.expectShape(op.input.get())
2829
val idempotentMember = inputShape.members().firstOrNull { it.hasTrait<IdempotencyTokenTrait>() }

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import software.amazon.smithy.swift.codegen.ClientRuntimeTypes
1212
import software.amazon.smithy.swift.codegen.SwiftWriter
1313
import software.amazon.smithy.swift.codegen.middleware.MiddlewarePosition
1414
import software.amazon.smithy.swift.codegen.middleware.MiddlewareRenderable
15+
import software.amazon.smithy.swift.codegen.middleware.MiddlewareRenderableExecutionContext
1516
import software.amazon.smithy.swift.codegen.middleware.MiddlewareStep
1617

1718
class LoggingMiddleware : MiddlewareRenderable {
@@ -27,7 +28,8 @@ class LoggingMiddleware : MiddlewareRenderable {
2728
symbolProvider: SymbolProvider,
2829
writer: SwiftWriter,
2930
op: OperationShape,
30-
operationStackName: String
31+
operationStackName: String,
32+
executionContext: MiddlewareRenderableExecutionContext
3133
) {
3234
writer.write("$operationStackName.${middlewareStep.stringValue()}.intercept(position: ${position.stringValue()}, middleware: \$N(${middlewareParamsString()}))", ClientRuntimeTypes.Middleware.LoggerMiddleware)
3335
}

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import software.amazon.smithy.swift.codegen.SwiftWriter
88
import software.amazon.smithy.swift.codegen.integration.isInHttpBody
99
import software.amazon.smithy.swift.codegen.middleware.MiddlewarePosition
1010
import software.amazon.smithy.swift.codegen.middleware.MiddlewareRenderable
11+
import software.amazon.smithy.swift.codegen.middleware.MiddlewareRenderableExecutionContext
1112
import software.amazon.smithy.swift.codegen.middleware.MiddlewareStep
1213

1314
class OperationInputBodyMiddleware(val shouldRender: Boolean = false) : MiddlewareRenderable {
@@ -23,7 +24,8 @@ class OperationInputBodyMiddleware(val shouldRender: Boolean = false) : Middlewa
2324
symbolProvider: SymbolProvider,
2425
writer: SwiftWriter,
2526
op: OperationShape,
26-
operationStackName: String
27+
operationStackName: String,
28+
executionContext: MiddlewareRenderableExecutionContext
2729
) {
2830
val inputShape = model.expectShape(op.input.get())
2931
val inputShapeName = ServiceGenerator.getOperationInputShapeName(symbolProvider, model, op)

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import software.amazon.smithy.swift.codegen.ServiceGenerator
77
import software.amazon.smithy.swift.codegen.SwiftWriter
88
import software.amazon.smithy.swift.codegen.middleware.MiddlewarePosition
99
import software.amazon.smithy.swift.codegen.middleware.MiddlewareRenderable
10+
import software.amazon.smithy.swift.codegen.middleware.MiddlewareRenderableExecutionContext
1011
import software.amazon.smithy.swift.codegen.middleware.MiddlewareStep
1112

1213
class OperationInputHeadersMiddleware : MiddlewareRenderable {
@@ -22,7 +23,8 @@ class OperationInputHeadersMiddleware : MiddlewareRenderable {
2223
symbolProvider: SymbolProvider,
2324
writer: SwiftWriter,
2425
op: OperationShape,
25-
operationStackName: String
26+
operationStackName: String,
27+
executionContext: MiddlewareRenderableExecutionContext
2628
) {
2729
val inputShapeName = ServiceGenerator.getOperationInputShapeName(symbolProvider, model, op)
2830
writer.write("$operationStackName.${middlewareStep.stringValue()}.intercept(position: ${position.stringValue()}, middleware: ${inputShapeName}HeadersMiddleware())")

0 commit comments

Comments
 (0)