All Downloads are FREE. Search and download functionalities are using the official Maven repository.

commonMain.aws.sdk.kotlin.services.mgn.transform.UpdateReplicationConfigurationTemplateOperationSerializer.kt Maven / Gradle / Ivy

// Code generated by smithy-kotlin-codegen. DO NOT EDIT!

package aws.sdk.kotlin.services.mgn.transform

import aws.sdk.kotlin.services.mgn.model.ReplicationConfigurationDataPlaneRouting
import aws.sdk.kotlin.services.mgn.model.ReplicationConfigurationDefaultLargeStagingDiskType
import aws.sdk.kotlin.services.mgn.model.ReplicationConfigurationEbsEncryption
import aws.sdk.kotlin.services.mgn.model.UpdateReplicationConfigurationTemplateRequest
import aws.smithy.kotlin.runtime.client.ExecutionContext
import aws.smithy.kotlin.runtime.http.HttpBody
import aws.smithy.kotlin.runtime.http.HttpMethod
import aws.smithy.kotlin.runtime.http.content.ByteArrayContent
import aws.smithy.kotlin.runtime.http.operation.HttpSerialize
import aws.smithy.kotlin.runtime.http.request.HttpRequestBuilder
import aws.smithy.kotlin.runtime.http.request.url
import aws.smithy.kotlin.runtime.serde.SdkFieldDescriptor
import aws.smithy.kotlin.runtime.serde.SdkObjectDescriptor
import aws.smithy.kotlin.runtime.serde.SerialKind
import aws.smithy.kotlin.runtime.serde.asSdkSerializable
import aws.smithy.kotlin.runtime.serde.deserializeList
import aws.smithy.kotlin.runtime.serde.deserializeMap
import aws.smithy.kotlin.runtime.serde.deserializeStruct
import aws.smithy.kotlin.runtime.serde.field
import aws.smithy.kotlin.runtime.serde.json.JsonDeserializer
import aws.smithy.kotlin.runtime.serde.json.JsonSerialName
import aws.smithy.kotlin.runtime.serde.json.JsonSerializer
import aws.smithy.kotlin.runtime.serde.serializeList
import aws.smithy.kotlin.runtime.serde.serializeMap
import aws.smithy.kotlin.runtime.serde.serializeStruct


internal class UpdateReplicationConfigurationTemplateOperationSerializer: HttpSerialize {
    override suspend fun serialize(context: ExecutionContext, input: UpdateReplicationConfigurationTemplateRequest): HttpRequestBuilder {
        val builder = HttpRequestBuilder()
        builder.method = HttpMethod.POST

        builder.url {
            path = "/UpdateReplicationConfigurationTemplate"
        }

        val payload = serializeUpdateReplicationConfigurationTemplateOperationBody(context, input)
        builder.body = ByteArrayContent(payload)
        if (builder.body !is HttpBody.Empty) {
            builder.headers.setMissing("Content-Type", "application/json")
        }
        return builder
    }
}

private fun serializeUpdateReplicationConfigurationTemplateOperationBody(context: ExecutionContext, input: UpdateReplicationConfigurationTemplateRequest): ByteArray {
    val serializer = JsonSerializer()
    val ARN_DESCRIPTOR = SdkFieldDescriptor(SerialKind.String, JsonSerialName("arn"))
    val ASSOCIATEDEFAULTSECURITYGROUP_DESCRIPTOR = SdkFieldDescriptor(SerialKind.Boolean, JsonSerialName("associateDefaultSecurityGroup"))
    val BANDWIDTHTHROTTLING_DESCRIPTOR = SdkFieldDescriptor(SerialKind.Long, JsonSerialName("bandwidthThrottling"))
    val CREATEPUBLICIP_DESCRIPTOR = SdkFieldDescriptor(SerialKind.Boolean, JsonSerialName("createPublicIP"))
    val DATAPLANEROUTING_DESCRIPTOR = SdkFieldDescriptor(SerialKind.String, JsonSerialName("dataPlaneRouting"))
    val DEFAULTLARGESTAGINGDISKTYPE_DESCRIPTOR = SdkFieldDescriptor(SerialKind.String, JsonSerialName("defaultLargeStagingDiskType"))
    val EBSENCRYPTION_DESCRIPTOR = SdkFieldDescriptor(SerialKind.String, JsonSerialName("ebsEncryption"))
    val EBSENCRYPTIONKEYARN_DESCRIPTOR = SdkFieldDescriptor(SerialKind.String, JsonSerialName("ebsEncryptionKeyArn"))
    val REPLICATIONCONFIGURATIONTEMPLATEID_DESCRIPTOR = SdkFieldDescriptor(SerialKind.String, JsonSerialName("replicationConfigurationTemplateID"))
    val REPLICATIONSERVERINSTANCETYPE_DESCRIPTOR = SdkFieldDescriptor(SerialKind.String, JsonSerialName("replicationServerInstanceType"))
    val REPLICATIONSERVERSSECURITYGROUPSIDS_DESCRIPTOR = SdkFieldDescriptor(SerialKind.List, JsonSerialName("replicationServersSecurityGroupsIDs"))
    val STAGINGAREASUBNETID_DESCRIPTOR = SdkFieldDescriptor(SerialKind.String, JsonSerialName("stagingAreaSubnetId"))
    val STAGINGAREATAGS_DESCRIPTOR = SdkFieldDescriptor(SerialKind.Map, JsonSerialName("stagingAreaTags"))
    val USEDEDICATEDREPLICATIONSERVER_DESCRIPTOR = SdkFieldDescriptor(SerialKind.Boolean, JsonSerialName("useDedicatedReplicationServer"))
    val OBJ_DESCRIPTOR = SdkObjectDescriptor.build {
        field(ARN_DESCRIPTOR)
        field(ASSOCIATEDEFAULTSECURITYGROUP_DESCRIPTOR)
        field(BANDWIDTHTHROTTLING_DESCRIPTOR)
        field(CREATEPUBLICIP_DESCRIPTOR)
        field(DATAPLANEROUTING_DESCRIPTOR)
        field(DEFAULTLARGESTAGINGDISKTYPE_DESCRIPTOR)
        field(EBSENCRYPTION_DESCRIPTOR)
        field(EBSENCRYPTIONKEYARN_DESCRIPTOR)
        field(REPLICATIONCONFIGURATIONTEMPLATEID_DESCRIPTOR)
        field(REPLICATIONSERVERINSTANCETYPE_DESCRIPTOR)
        field(REPLICATIONSERVERSSECURITYGROUPSIDS_DESCRIPTOR)
        field(STAGINGAREASUBNETID_DESCRIPTOR)
        field(STAGINGAREATAGS_DESCRIPTOR)
        field(USEDEDICATEDREPLICATIONSERVER_DESCRIPTOR)
    }

    serializer.serializeStruct(OBJ_DESCRIPTOR) {
        input.arn?.let { field(ARN_DESCRIPTOR, it) }
        input.associateDefaultSecurityGroup?.let { field(ASSOCIATEDEFAULTSECURITYGROUP_DESCRIPTOR, it) }
        if (input.bandwidthThrottling != 0L) field(BANDWIDTHTHROTTLING_DESCRIPTOR, input.bandwidthThrottling)
        input.createPublicIp?.let { field(CREATEPUBLICIP_DESCRIPTOR, it) }
        input.dataPlaneRouting?.let { field(DATAPLANEROUTING_DESCRIPTOR, it.value) }
        input.defaultLargeStagingDiskType?.let { field(DEFAULTLARGESTAGINGDISKTYPE_DESCRIPTOR, it.value) }
        input.ebsEncryption?.let { field(EBSENCRYPTION_DESCRIPTOR, it.value) }
        input.ebsEncryptionKeyArn?.let { field(EBSENCRYPTIONKEYARN_DESCRIPTOR, it) }
        input.replicationConfigurationTemplateId?.let { field(REPLICATIONCONFIGURATIONTEMPLATEID_DESCRIPTOR, it) }
        input.replicationServerInstanceType?.let { field(REPLICATIONSERVERINSTANCETYPE_DESCRIPTOR, it) }
        if (input.replicationServersSecurityGroupsIDs != null) {
            listField(REPLICATIONSERVERSSECURITYGROUPSIDS_DESCRIPTOR) {
                for (el0 in input.replicationServersSecurityGroupsIDs) {
                    serializeString(el0)
                }
            }
        }
        input.stagingAreaSubnetId?.let { field(STAGINGAREASUBNETID_DESCRIPTOR, it) }
        if (input.stagingAreaTags != null) {
            mapField(STAGINGAREATAGS_DESCRIPTOR) {
                input.stagingAreaTags.forEach { (key, value) -> entry(key, value) }
            }
        }
        input.useDedicatedReplicationServer?.let { field(USEDEDICATEDREPLICATIONSERVER_DESCRIPTOR, it) }
    }
    return serializer.toByteArray()
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy