in codegen/smithy-aws-swift-codegen/src/main/kotlin/software/amazon/smithy/aws/swift/codegen/restxml/AWSRestXMLHttpResponseBindingErrorGenerator.kt [24:46]
override fun render(ctx: ProtocolGenerator.GenerationContext, op: OperationShape) {
val operationErrorName = "${op.capitalizedName()}OutputError"
val rootNamespace = ctx.settings.moduleName
val httpBindingSymbol = Symbol.builder()
.definitionFile("./$rootNamespace/models/$operationErrorName+HttpResponseBinding.swift")
.name(operationErrorName)
.build()
ctx.delegator.useShapeWriter(httpBindingSymbol) { writer ->
writer.addImport(AWSSwiftDependency.AWS_CLIENT_RUNTIME.packageName)
writer.addImport(SwiftDependency.CLIENT_RUNTIME.packageName)
writer.openBlock("extension \$L: \$N {", "}", operationErrorName, ClientRuntimeTypes.Http.HttpResponseBinding) {
writer.openBlock("public init(httpResponse: \$N, decoder: \$D) throws {", "}", ClientRuntimeTypes.Http.HttpResponse, ClientRuntimeTypes.Serde.ResponseDecoder) {
writer.declareSection(RestXMLResponseBindingSectionId, mapOf<String, Any>("operationErrorName" to operationErrorName)) {
writer.write("let errorDetails = try \$N(httpResponse: httpResponse)", AWSClientRuntimeTypes.RestXML.RestXMLError)
writer.write("try self.init(errorType: errorDetails.errorCode, httpResponse: httpResponse, decoder: decoder, message: errorDetails.message, requestID: errorDetails.requestId)")
}
}
}
}
}