diff --git a/codegen/smithy-aws-swift-codegen/src/main/kotlin/software/amazon/smithy/aws/swift/codegen/customization/glacier/GlacierAddVersionHeader.kt b/codegen/smithy-aws-swift-codegen/src/main/kotlin/software/amazon/smithy/aws/swift/codegen/customization/glacier/GlacierAddVersionHeader.kt new file mode 100644 index 00000000000..fe58fca7b96 --- /dev/null +++ b/codegen/smithy-aws-swift-codegen/src/main/kotlin/software/amazon/smithy/aws/swift/codegen/customization/glacier/GlacierAddVersionHeader.kt @@ -0,0 +1,30 @@ +package software.amazon.smithy.aws.swift.codegen.customization.glacier + +import software.amazon.smithy.aws.swift.codegen.middleware.MutateHeadersMiddleware +import software.amazon.smithy.aws.swift.codegen.sdkId +import software.amazon.smithy.model.Model +import software.amazon.smithy.model.shapes.ServiceShape +import software.amazon.smithy.swift.codegen.SwiftSettings +import software.amazon.smithy.swift.codegen.integration.OperationMiddlewareRenderable +import software.amazon.smithy.swift.codegen.integration.ProtocolGenerator +import software.amazon.smithy.swift.codegen.integration.SwiftIntegration +import software.amazon.smithy.swift.codegen.model.expectShape + +/** + * Adds a middleware that sets the "X-Amz-Glacier-Version" header to the service model version for all requests + * See https://docs.aws.amazon.com/amazonglacier/latest/dev/api-common-request-headers.html + */ +class GlacierAddVersionHeader : SwiftIntegration { + + override fun enabledForService(model: Model, settings: SwiftSettings) = + model.expectShape(settings.service).sdkId.equals("Glacier", ignoreCase = true) + + override fun customizeMiddleware( + ctx: ProtocolGenerator.GenerationContext, + resolved: List + ) = resolved + MutateHeadersMiddleware( + extraHeaders = mapOf( + "X-Amz-Glacier-Version" to ctx.model.expectShape(ctx.settings.service).version + ) + ) +} diff --git a/codegen/smithy-aws-swift-codegen/src/main/resources/META-INF/services/software.amazon.smithy.swift.codegen.integration.SwiftIntegration b/codegen/smithy-aws-swift-codegen/src/main/resources/META-INF/services/software.amazon.smithy.swift.codegen.integration.SwiftIntegration index e741610264d..f28011b4a25 100644 --- a/codegen/smithy-aws-swift-codegen/src/main/resources/META-INF/services/software.amazon.smithy.swift.codegen.integration.SwiftIntegration +++ b/codegen/smithy-aws-swift-codegen/src/main/resources/META-INF/services/software.amazon.smithy.swift.codegen.integration.SwiftIntegration @@ -1,3 +1,4 @@ software.amazon.smithy.aws.swift.codegen.AddProtocols software.amazon.smithy.aws.swift.codegen.customization.s3.S3SigningConfig -software.amazon.smithy.aws.swift.codegen.customization.apigateway.ApiGatewayAddAcceptHeader \ No newline at end of file +software.amazon.smithy.aws.swift.codegen.customization.apigateway.ApiGatewayAddAcceptHeader +software.amazon.smithy.aws.swift.codegen.customization.glacier.GlacierAddVersionHeader \ No newline at end of file