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

commonMain.aws.sdk.kotlin.services.customerprofiles.transform.UpdateProfileOperationSerializer.kt Maven / Gradle / Ivy

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

package aws.sdk.kotlin.services.customerprofiles.transform

import aws.sdk.kotlin.services.customerprofiles.model.Gender
import aws.sdk.kotlin.services.customerprofiles.model.PartyType
import aws.sdk.kotlin.services.customerprofiles.model.UpdateAddress
import aws.sdk.kotlin.services.customerprofiles.model.UpdateProfileRequest
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.http.util.encodeLabel
import aws.smithy.kotlin.runtime.operation.ExecutionContext
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 UpdateProfileOperationSerializer: HttpSerialize {
    override suspend fun serialize(context: ExecutionContext, input: UpdateProfileRequest): HttpRequestBuilder {
        val builder = HttpRequestBuilder()
        builder.method = HttpMethod.PUT

        builder.url {
            val pathSegments = listOf(
                "domains",
                "${input.domainName}".encodeLabel(),
                "profiles",
            )
            path = pathSegments.joinToString(separator = "/", prefix = "/")
        }

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

private fun serializeUpdateProfileOperationBody(context: ExecutionContext, input: UpdateProfileRequest): ByteArray {
    val serializer = JsonSerializer()
    val ACCOUNTNUMBER_DESCRIPTOR = SdkFieldDescriptor(SerialKind.String, JsonSerialName("AccountNumber"))
    val ADDITIONALINFORMATION_DESCRIPTOR = SdkFieldDescriptor(SerialKind.String, JsonSerialName("AdditionalInformation"))
    val ADDRESS_DESCRIPTOR = SdkFieldDescriptor(SerialKind.Struct, JsonSerialName("Address"))
    val ATTRIBUTES_DESCRIPTOR = SdkFieldDescriptor(SerialKind.Map, JsonSerialName("Attributes"))
    val BILLINGADDRESS_DESCRIPTOR = SdkFieldDescriptor(SerialKind.Struct, JsonSerialName("BillingAddress"))
    val BIRTHDATE_DESCRIPTOR = SdkFieldDescriptor(SerialKind.String, JsonSerialName("BirthDate"))
    val BUSINESSEMAILADDRESS_DESCRIPTOR = SdkFieldDescriptor(SerialKind.String, JsonSerialName("BusinessEmailAddress"))
    val BUSINESSNAME_DESCRIPTOR = SdkFieldDescriptor(SerialKind.String, JsonSerialName("BusinessName"))
    val BUSINESSPHONENUMBER_DESCRIPTOR = SdkFieldDescriptor(SerialKind.String, JsonSerialName("BusinessPhoneNumber"))
    val EMAILADDRESS_DESCRIPTOR = SdkFieldDescriptor(SerialKind.String, JsonSerialName("EmailAddress"))
    val FIRSTNAME_DESCRIPTOR = SdkFieldDescriptor(SerialKind.String, JsonSerialName("FirstName"))
    val GENDER_DESCRIPTOR = SdkFieldDescriptor(SerialKind.Enum, JsonSerialName("Gender"))
    val GENDERSTRING_DESCRIPTOR = SdkFieldDescriptor(SerialKind.String, JsonSerialName("GenderString"))
    val HOMEPHONENUMBER_DESCRIPTOR = SdkFieldDescriptor(SerialKind.String, JsonSerialName("HomePhoneNumber"))
    val LASTNAME_DESCRIPTOR = SdkFieldDescriptor(SerialKind.String, JsonSerialName("LastName"))
    val MAILINGADDRESS_DESCRIPTOR = SdkFieldDescriptor(SerialKind.Struct, JsonSerialName("MailingAddress"))
    val MIDDLENAME_DESCRIPTOR = SdkFieldDescriptor(SerialKind.String, JsonSerialName("MiddleName"))
    val MOBILEPHONENUMBER_DESCRIPTOR = SdkFieldDescriptor(SerialKind.String, JsonSerialName("MobilePhoneNumber"))
    val PARTYTYPE_DESCRIPTOR = SdkFieldDescriptor(SerialKind.Enum, JsonSerialName("PartyType"))
    val PARTYTYPESTRING_DESCRIPTOR = SdkFieldDescriptor(SerialKind.String, JsonSerialName("PartyTypeString"))
    val PERSONALEMAILADDRESS_DESCRIPTOR = SdkFieldDescriptor(SerialKind.String, JsonSerialName("PersonalEmailAddress"))
    val PHONENUMBER_DESCRIPTOR = SdkFieldDescriptor(SerialKind.String, JsonSerialName("PhoneNumber"))
    val PROFILEID_DESCRIPTOR = SdkFieldDescriptor(SerialKind.String, JsonSerialName("ProfileId"))
    val SHIPPINGADDRESS_DESCRIPTOR = SdkFieldDescriptor(SerialKind.Struct, JsonSerialName("ShippingAddress"))
    val OBJ_DESCRIPTOR = SdkObjectDescriptor.build {
        field(ACCOUNTNUMBER_DESCRIPTOR)
        field(ADDITIONALINFORMATION_DESCRIPTOR)
        field(ADDRESS_DESCRIPTOR)
        field(ATTRIBUTES_DESCRIPTOR)
        field(BILLINGADDRESS_DESCRIPTOR)
        field(BIRTHDATE_DESCRIPTOR)
        field(BUSINESSEMAILADDRESS_DESCRIPTOR)
        field(BUSINESSNAME_DESCRIPTOR)
        field(BUSINESSPHONENUMBER_DESCRIPTOR)
        field(EMAILADDRESS_DESCRIPTOR)
        field(FIRSTNAME_DESCRIPTOR)
        field(GENDER_DESCRIPTOR)
        field(GENDERSTRING_DESCRIPTOR)
        field(HOMEPHONENUMBER_DESCRIPTOR)
        field(LASTNAME_DESCRIPTOR)
        field(MAILINGADDRESS_DESCRIPTOR)
        field(MIDDLENAME_DESCRIPTOR)
        field(MOBILEPHONENUMBER_DESCRIPTOR)
        field(PARTYTYPE_DESCRIPTOR)
        field(PARTYTYPESTRING_DESCRIPTOR)
        field(PERSONALEMAILADDRESS_DESCRIPTOR)
        field(PHONENUMBER_DESCRIPTOR)
        field(PROFILEID_DESCRIPTOR)
        field(SHIPPINGADDRESS_DESCRIPTOR)
    }

    serializer.serializeStruct(OBJ_DESCRIPTOR) {
        input.accountNumber?.let { field(ACCOUNTNUMBER_DESCRIPTOR, it) }
        input.additionalInformation?.let { field(ADDITIONALINFORMATION_DESCRIPTOR, it) }
        input.address?.let { field(ADDRESS_DESCRIPTOR, it, ::serializeUpdateAddressDocument) }
        if (input.attributes != null) {
            mapField(ATTRIBUTES_DESCRIPTOR) {
                input.attributes.forEach { (key, value) -> entry(key, value) }
            }
        }
        input.billingAddress?.let { field(BILLINGADDRESS_DESCRIPTOR, it, ::serializeUpdateAddressDocument) }
        input.birthDate?.let { field(BIRTHDATE_DESCRIPTOR, it) }
        input.businessEmailAddress?.let { field(BUSINESSEMAILADDRESS_DESCRIPTOR, it) }
        input.businessName?.let { field(BUSINESSNAME_DESCRIPTOR, it) }
        input.businessPhoneNumber?.let { field(BUSINESSPHONENUMBER_DESCRIPTOR, it) }
        input.emailAddress?.let { field(EMAILADDRESS_DESCRIPTOR, it) }
        input.firstName?.let { field(FIRSTNAME_DESCRIPTOR, it) }
        input.gender?.let { field(GENDER_DESCRIPTOR, it.value) }
        input.genderString?.let { field(GENDERSTRING_DESCRIPTOR, it) }
        input.homePhoneNumber?.let { field(HOMEPHONENUMBER_DESCRIPTOR, it) }
        input.lastName?.let { field(LASTNAME_DESCRIPTOR, it) }
        input.mailingAddress?.let { field(MAILINGADDRESS_DESCRIPTOR, it, ::serializeUpdateAddressDocument) }
        input.middleName?.let { field(MIDDLENAME_DESCRIPTOR, it) }
        input.mobilePhoneNumber?.let { field(MOBILEPHONENUMBER_DESCRIPTOR, it) }
        input.partyType?.let { field(PARTYTYPE_DESCRIPTOR, it.value) }
        input.partyTypeString?.let { field(PARTYTYPESTRING_DESCRIPTOR, it) }
        input.personalEmailAddress?.let { field(PERSONALEMAILADDRESS_DESCRIPTOR, it) }
        input.phoneNumber?.let { field(PHONENUMBER_DESCRIPTOR, it) }
        input.profileId?.let { field(PROFILEID_DESCRIPTOR, it) }
        input.shippingAddress?.let { field(SHIPPINGADDRESS_DESCRIPTOR, it, ::serializeUpdateAddressDocument) }
    }
    return serializer.toByteArray()
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy