24 24 | import aws.smithy.kotlin.runtime.serde.formurl.FormUrlFlattened
|
25 25 | import aws.smithy.kotlin.runtime.serde.formurl.FormUrlSerialName
|
26 26 | import aws.smithy.kotlin.runtime.serde.formurl.FormUrlSerializer
|
27 27 | import aws.smithy.kotlin.runtime.serde.formurl.QueryLiteral
|
28 28 | import aws.smithy.kotlin.runtime.serde.serializeList
|
29 29 | import aws.smithy.kotlin.runtime.serde.serializeMap
|
30 30 | import aws.smithy.kotlin.runtime.serde.serializeStruct
|
31 31 |
|
32 32 |
|
33 33 | internal class CreateVolumeOperationSerializer: HttpSerializer.NonStreaming<CreateVolumeRequest> {
|
34 34 | override fun serialize(context: ExecutionContext, input: CreateVolumeRequest): HttpRequestBuilder {
|
35 35 | val builder = HttpRequestBuilder()
|
36 36 | builder.method = HttpMethod.POST
|
37 37 |
|
38 38 | builder.url {
|
39 39 | path.encoded = "/"
|
40 40 | }
|
41 41 |
|
42 42 | val payload = serializeCreateVolumeOperationBody(context, input)
|
43 43 | builder.body = HttpBody.fromBytes(payload)
|
44 44 | if (builder.body !is HttpBody.Empty) {
|
45 45 | builder.headers.setMissing("Content-Type", "application/x-www-form-urlencoded")
|
46 46 | }
|
47 47 | return builder
|
48 48 | }
|
49 49 | }
|
50 50 |
|
51 51 | private fun serializeCreateVolumeOperationBody(context: ExecutionContext, input: CreateVolumeRequest): ByteArray {
|
52 52 | val serializer = FormUrlSerializer()
|
53 53 | val AVAILABILITYZONE_DESCRIPTOR = SdkFieldDescriptor(SerialKind.String, FormUrlSerialName("AvailabilityZone"))
|
54 + | val AVAILABILITYZONEID_DESCRIPTOR = SdkFieldDescriptor(SerialKind.String, FormUrlSerialName("AvailabilityZoneId"))
|
54 55 | val CLIENTTOKEN_DESCRIPTOR = SdkFieldDescriptor(SerialKind.String, FormUrlSerialName("ClientToken"))
|
55 56 | val DRYRUN_DESCRIPTOR = SdkFieldDescriptor(SerialKind.Boolean, FormUrlSerialName("DryRun"))
|
56 57 | val ENCRYPTED_DESCRIPTOR = SdkFieldDescriptor(SerialKind.Boolean, FormUrlSerialName("Encrypted"))
|
57 58 | val IOPS_DESCRIPTOR = SdkFieldDescriptor(SerialKind.Integer, FormUrlSerialName("Iops"))
|
58 59 | val KMSKEYID_DESCRIPTOR = SdkFieldDescriptor(SerialKind.String, FormUrlSerialName("KmsKeyId"))
|
59 60 | val MULTIATTACHENABLED_DESCRIPTOR = SdkFieldDescriptor(SerialKind.Boolean, FormUrlSerialName("MultiAttachEnabled"))
|
60 61 | val OPERATOR_DESCRIPTOR = SdkFieldDescriptor(SerialKind.Struct, FormUrlSerialName("Operator"))
|
61 62 | val OUTPOSTARN_DESCRIPTOR = SdkFieldDescriptor(SerialKind.String, FormUrlSerialName("OutpostArn"))
|
62 63 | val SIZE_DESCRIPTOR = SdkFieldDescriptor(SerialKind.Integer, FormUrlSerialName("Size"))
|
63 64 | val SNAPSHOTID_DESCRIPTOR = SdkFieldDescriptor(SerialKind.String, FormUrlSerialName("SnapshotId"))
|
64 65 | val TAGSPECIFICATIONS_DESCRIPTOR = SdkFieldDescriptor(SerialKind.List, FormUrlSerialName("TagSpecification"), FormUrlFlattened)
|
65 66 | val THROUGHPUT_DESCRIPTOR = SdkFieldDescriptor(SerialKind.Integer, FormUrlSerialName("Throughput"))
|
66 67 | val VOLUMEINITIALIZATIONRATE_DESCRIPTOR = SdkFieldDescriptor(SerialKind.Integer, FormUrlSerialName("VolumeInitializationRate"))
|
67 68 | val VOLUMETYPE_DESCRIPTOR = SdkFieldDescriptor(SerialKind.Enum, FormUrlSerialName("VolumeType"))
|
68 69 | val OBJ_DESCRIPTOR = SdkObjectDescriptor.build {
|
69 70 | trait(FormUrlSerialName("CreateVolumeRequest"))
|
70 71 | trait(QueryLiteral("Action", "CreateVolume"))
|
71 72 | trait(QueryLiteral("Version", "2016-11-15"))
|
72 73 | field(AVAILABILITYZONE_DESCRIPTOR)
|
74 + | field(AVAILABILITYZONEID_DESCRIPTOR)
|
73 75 | field(CLIENTTOKEN_DESCRIPTOR)
|
74 76 | field(DRYRUN_DESCRIPTOR)
|
75 77 | field(ENCRYPTED_DESCRIPTOR)
|
76 78 | field(IOPS_DESCRIPTOR)
|
77 79 | field(KMSKEYID_DESCRIPTOR)
|
78 80 | field(MULTIATTACHENABLED_DESCRIPTOR)
|
79 81 | field(OPERATOR_DESCRIPTOR)
|
80 82 | field(OUTPOSTARN_DESCRIPTOR)
|
81 83 | field(SIZE_DESCRIPTOR)
|
82 84 | field(SNAPSHOTID_DESCRIPTOR)
|
83 85 | field(TAGSPECIFICATIONS_DESCRIPTOR)
|
84 86 | field(THROUGHPUT_DESCRIPTOR)
|
85 87 | field(VOLUMEINITIALIZATIONRATE_DESCRIPTOR)
|
86 88 | field(VOLUMETYPE_DESCRIPTOR)
|
87 89 | }
|
88 90 |
|
89 91 | serializer.serializeStruct(OBJ_DESCRIPTOR) {
|
90 92 | input.availabilityZone?.let { field(AVAILABILITYZONE_DESCRIPTOR, it) }
|
93 + | input.availabilityZoneId?.let { field(AVAILABILITYZONEID_DESCRIPTOR, it) }
|
91 94 | input.clientToken?.let { field(CLIENTTOKEN_DESCRIPTOR, it) } ?: field(CLIENTTOKEN_DESCRIPTOR, context.idempotencyTokenProvider.generateToken())
|
92 95 | input.dryRun?.let { field(DRYRUN_DESCRIPTOR, it) }
|
93 96 | input.encrypted?.let { field(ENCRYPTED_DESCRIPTOR, it) }
|
94 97 | input.iops?.let { field(IOPS_DESCRIPTOR, it) }
|
95 98 | input.kmsKeyId?.let { field(KMSKEYID_DESCRIPTOR, it) }
|
96 99 | input.multiAttachEnabled?.let { field(MULTIATTACHENABLED_DESCRIPTOR, it) }
|
97 100 | input.operator?.let { field(OPERATOR_DESCRIPTOR, it, ::serializeOperatorRequestDocument) }
|
98 101 | input.outpostArn?.let { field(OUTPOSTARN_DESCRIPTOR, it) }
|
99 102 | input.size?.let { field(SIZE_DESCRIPTOR, it) }
|
100 103 | input.snapshotId?.let { field(SNAPSHOTID_DESCRIPTOR, it) }
|