software.amazon.smithy.kotlin.codegen.aws.protocols.AwsJson1_1.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of smithy-aws-kotlin-codegen Show documentation
Show all versions of smithy-aws-kotlin-codegen Show documentation
Codegen support for AWS protocols
/*
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0
*/
package software.amazon.smithy.kotlin.codegen.aws.protocols
import software.amazon.smithy.aws.traits.protocols.AwsJson1_1Trait
import software.amazon.smithy.kotlin.codegen.aws.protocols.core.AwsHttpBindingProtocolGenerator
import software.amazon.smithy.kotlin.codegen.aws.protocols.json.AwsJsonHttpBindingResolver
import software.amazon.smithy.kotlin.codegen.aws.protocols.json.AwsJsonProtocolMiddleware
import software.amazon.smithy.kotlin.codegen.aws.protocols.json.AwsJsonProtocolParserGenerator
import software.amazon.smithy.kotlin.codegen.aws.protocols.json.JsonHttpBindingProtocolGenerator
import software.amazon.smithy.kotlin.codegen.rendering.protocol.HttpBindingResolver
import software.amazon.smithy.kotlin.codegen.rendering.protocol.ProtocolGenerator
import software.amazon.smithy.kotlin.codegen.rendering.protocol.ProtocolMiddleware
import software.amazon.smithy.kotlin.codegen.rendering.serde.StructuredDataParserGenerator
import software.amazon.smithy.model.Model
import software.amazon.smithy.model.shapes.ServiceShape
import software.amazon.smithy.model.shapes.ShapeId
/**
* Handles generating the aws.protocols#awsJson1_1 protocol for services.
*
* @inheritDoc
* @see AwsHttpBindingProtocolGenerator
*/
@Suppress("ktlint:standard:class-naming")
class AwsJson1_1 : JsonHttpBindingProtocolGenerator() {
override val protocol: ShapeId = AwsJson1_1Trait.ID
override val supportsJsonNameTrait: Boolean = false
override fun getDefaultHttpMiddleware(ctx: ProtocolGenerator.GenerationContext): List {
val httpMiddleware = super.getDefaultHttpMiddleware(ctx)
val awsJsonMiddleware = listOf(
AwsJsonProtocolMiddleware(ctx.settings.service, "1.1"),
)
return httpMiddleware + awsJsonMiddleware
}
override fun getProtocolHttpBindingResolver(model: Model, serviceShape: ServiceShape): HttpBindingResolver =
AwsJsonHttpBindingResolver(model, serviceShape, "application/x-amz-json-1.1")
override fun structuredDataParser(ctx: ProtocolGenerator.GenerationContext): StructuredDataParserGenerator =
AwsJsonProtocolParserGenerator(this, supportsJsonNameTrait)
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy