1// Code generated by smithy-go-codegen DO NOT EDIT.
2
3package pi
4
5import (
6	"bytes"
7	"context"
8	"fmt"
9	"github.com/aws/aws-sdk-go-v2/service/pi/types"
10	smithy "github.com/aws/smithy-go"
11	"github.com/aws/smithy-go/encoding/httpbinding"
12	smithyjson "github.com/aws/smithy-go/encoding/json"
13	"github.com/aws/smithy-go/middleware"
14	smithytime "github.com/aws/smithy-go/time"
15	smithyhttp "github.com/aws/smithy-go/transport/http"
16)
17
18type awsAwsjson11_serializeOpDescribeDimensionKeys struct {
19}
20
21func (*awsAwsjson11_serializeOpDescribeDimensionKeys) ID() string {
22	return "OperationSerializer"
23}
24
25func (m *awsAwsjson11_serializeOpDescribeDimensionKeys) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) (
26	out middleware.SerializeOutput, metadata middleware.Metadata, err error,
27) {
28	request, ok := in.Request.(*smithyhttp.Request)
29	if !ok {
30		return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)}
31	}
32
33	input, ok := in.Parameters.(*DescribeDimensionKeysInput)
34	_ = input
35	if !ok {
36		return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)}
37	}
38
39	request.Request.URL.Path = "/"
40	request.Request.Method = "POST"
41	httpBindingEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header)
42	if err != nil {
43		return out, metadata, &smithy.SerializationError{Err: err}
44	}
45	httpBindingEncoder.SetHeader("Content-Type").String("application/x-amz-json-1.1")
46	httpBindingEncoder.SetHeader("X-Amz-Target").String("PerformanceInsightsv20180227.DescribeDimensionKeys")
47
48	jsonEncoder := smithyjson.NewEncoder()
49	if err := awsAwsjson11_serializeOpDocumentDescribeDimensionKeysInput(input, jsonEncoder.Value); err != nil {
50		return out, metadata, &smithy.SerializationError{Err: err}
51	}
52
53	if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil {
54		return out, metadata, &smithy.SerializationError{Err: err}
55	}
56
57	if request.Request, err = httpBindingEncoder.Encode(request.Request); err != nil {
58		return out, metadata, &smithy.SerializationError{Err: err}
59	}
60	in.Request = request
61
62	return next.HandleSerialize(ctx, in)
63}
64
65type awsAwsjson11_serializeOpGetDimensionKeyDetails struct {
66}
67
68func (*awsAwsjson11_serializeOpGetDimensionKeyDetails) ID() string {
69	return "OperationSerializer"
70}
71
72func (m *awsAwsjson11_serializeOpGetDimensionKeyDetails) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) (
73	out middleware.SerializeOutput, metadata middleware.Metadata, err error,
74) {
75	request, ok := in.Request.(*smithyhttp.Request)
76	if !ok {
77		return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)}
78	}
79
80	input, ok := in.Parameters.(*GetDimensionKeyDetailsInput)
81	_ = input
82	if !ok {
83		return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)}
84	}
85
86	request.Request.URL.Path = "/"
87	request.Request.Method = "POST"
88	httpBindingEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header)
89	if err != nil {
90		return out, metadata, &smithy.SerializationError{Err: err}
91	}
92	httpBindingEncoder.SetHeader("Content-Type").String("application/x-amz-json-1.1")
93	httpBindingEncoder.SetHeader("X-Amz-Target").String("PerformanceInsightsv20180227.GetDimensionKeyDetails")
94
95	jsonEncoder := smithyjson.NewEncoder()
96	if err := awsAwsjson11_serializeOpDocumentGetDimensionKeyDetailsInput(input, jsonEncoder.Value); err != nil {
97		return out, metadata, &smithy.SerializationError{Err: err}
98	}
99
100	if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil {
101		return out, metadata, &smithy.SerializationError{Err: err}
102	}
103
104	if request.Request, err = httpBindingEncoder.Encode(request.Request); err != nil {
105		return out, metadata, &smithy.SerializationError{Err: err}
106	}
107	in.Request = request
108
109	return next.HandleSerialize(ctx, in)
110}
111
112type awsAwsjson11_serializeOpGetResourceMetrics struct {
113}
114
115func (*awsAwsjson11_serializeOpGetResourceMetrics) ID() string {
116	return "OperationSerializer"
117}
118
119func (m *awsAwsjson11_serializeOpGetResourceMetrics) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) (
120	out middleware.SerializeOutput, metadata middleware.Metadata, err error,
121) {
122	request, ok := in.Request.(*smithyhttp.Request)
123	if !ok {
124		return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)}
125	}
126
127	input, ok := in.Parameters.(*GetResourceMetricsInput)
128	_ = input
129	if !ok {
130		return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)}
131	}
132
133	request.Request.URL.Path = "/"
134	request.Request.Method = "POST"
135	httpBindingEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header)
136	if err != nil {
137		return out, metadata, &smithy.SerializationError{Err: err}
138	}
139	httpBindingEncoder.SetHeader("Content-Type").String("application/x-amz-json-1.1")
140	httpBindingEncoder.SetHeader("X-Amz-Target").String("PerformanceInsightsv20180227.GetResourceMetrics")
141
142	jsonEncoder := smithyjson.NewEncoder()
143	if err := awsAwsjson11_serializeOpDocumentGetResourceMetricsInput(input, jsonEncoder.Value); err != nil {
144		return out, metadata, &smithy.SerializationError{Err: err}
145	}
146
147	if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil {
148		return out, metadata, &smithy.SerializationError{Err: err}
149	}
150
151	if request.Request, err = httpBindingEncoder.Encode(request.Request); err != nil {
152		return out, metadata, &smithy.SerializationError{Err: err}
153	}
154	in.Request = request
155
156	return next.HandleSerialize(ctx, in)
157}
158func awsAwsjson11_serializeDocumentDimensionGroup(v *types.DimensionGroup, value smithyjson.Value) error {
159	object := value.Object()
160	defer object.Close()
161
162	if v.Dimensions != nil {
163		ok := object.Key("Dimensions")
164		if err := awsAwsjson11_serializeDocumentRequestStringList(v.Dimensions, ok); err != nil {
165			return err
166		}
167	}
168
169	if v.Group != nil {
170		ok := object.Key("Group")
171		ok.String(*v.Group)
172	}
173
174	if v.Limit != nil {
175		ok := object.Key("Limit")
176		ok.Integer(*v.Limit)
177	}
178
179	return nil
180}
181
182func awsAwsjson11_serializeDocumentMetricQuery(v *types.MetricQuery, value smithyjson.Value) error {
183	object := value.Object()
184	defer object.Close()
185
186	if v.Filter != nil {
187		ok := object.Key("Filter")
188		if err := awsAwsjson11_serializeDocumentMetricQueryFilterMap(v.Filter, ok); err != nil {
189			return err
190		}
191	}
192
193	if v.GroupBy != nil {
194		ok := object.Key("GroupBy")
195		if err := awsAwsjson11_serializeDocumentDimensionGroup(v.GroupBy, ok); err != nil {
196			return err
197		}
198	}
199
200	if v.Metric != nil {
201		ok := object.Key("Metric")
202		ok.String(*v.Metric)
203	}
204
205	return nil
206}
207
208func awsAwsjson11_serializeDocumentMetricQueryFilterMap(v map[string]string, value smithyjson.Value) error {
209	object := value.Object()
210	defer object.Close()
211
212	for key := range v {
213		om := object.Key(key)
214		om.String(v[key])
215	}
216	return nil
217}
218
219func awsAwsjson11_serializeDocumentMetricQueryList(v []types.MetricQuery, value smithyjson.Value) error {
220	array := value.Array()
221	defer array.Close()
222
223	for i := range v {
224		av := array.Value()
225		if err := awsAwsjson11_serializeDocumentMetricQuery(&v[i], av); err != nil {
226			return err
227		}
228	}
229	return nil
230}
231
232func awsAwsjson11_serializeDocumentRequestedDimensionList(v []string, value smithyjson.Value) error {
233	array := value.Array()
234	defer array.Close()
235
236	for i := range v {
237		av := array.Value()
238		av.String(v[i])
239	}
240	return nil
241}
242
243func awsAwsjson11_serializeDocumentRequestStringList(v []string, value smithyjson.Value) error {
244	array := value.Array()
245	defer array.Close()
246
247	for i := range v {
248		av := array.Value()
249		av.String(v[i])
250	}
251	return nil
252}
253
254func awsAwsjson11_serializeOpDocumentDescribeDimensionKeysInput(v *DescribeDimensionKeysInput, value smithyjson.Value) error {
255	object := value.Object()
256	defer object.Close()
257
258	if v.EndTime != nil {
259		ok := object.Key("EndTime")
260		ok.Double(smithytime.FormatEpochSeconds(*v.EndTime))
261	}
262
263	if v.Filter != nil {
264		ok := object.Key("Filter")
265		if err := awsAwsjson11_serializeDocumentMetricQueryFilterMap(v.Filter, ok); err != nil {
266			return err
267		}
268	}
269
270	if v.GroupBy != nil {
271		ok := object.Key("GroupBy")
272		if err := awsAwsjson11_serializeDocumentDimensionGroup(v.GroupBy, ok); err != nil {
273			return err
274		}
275	}
276
277	if v.Identifier != nil {
278		ok := object.Key("Identifier")
279		ok.String(*v.Identifier)
280	}
281
282	if v.MaxResults != nil {
283		ok := object.Key("MaxResults")
284		ok.Integer(*v.MaxResults)
285	}
286
287	if v.Metric != nil {
288		ok := object.Key("Metric")
289		ok.String(*v.Metric)
290	}
291
292	if v.NextToken != nil {
293		ok := object.Key("NextToken")
294		ok.String(*v.NextToken)
295	}
296
297	if v.PartitionBy != nil {
298		ok := object.Key("PartitionBy")
299		if err := awsAwsjson11_serializeDocumentDimensionGroup(v.PartitionBy, ok); err != nil {
300			return err
301		}
302	}
303
304	if v.PeriodInSeconds != nil {
305		ok := object.Key("PeriodInSeconds")
306		ok.Integer(*v.PeriodInSeconds)
307	}
308
309	if len(v.ServiceType) > 0 {
310		ok := object.Key("ServiceType")
311		ok.String(string(v.ServiceType))
312	}
313
314	if v.StartTime != nil {
315		ok := object.Key("StartTime")
316		ok.Double(smithytime.FormatEpochSeconds(*v.StartTime))
317	}
318
319	return nil
320}
321
322func awsAwsjson11_serializeOpDocumentGetDimensionKeyDetailsInput(v *GetDimensionKeyDetailsInput, value smithyjson.Value) error {
323	object := value.Object()
324	defer object.Close()
325
326	if v.Group != nil {
327		ok := object.Key("Group")
328		ok.String(*v.Group)
329	}
330
331	if v.GroupIdentifier != nil {
332		ok := object.Key("GroupIdentifier")
333		ok.String(*v.GroupIdentifier)
334	}
335
336	if v.Identifier != nil {
337		ok := object.Key("Identifier")
338		ok.String(*v.Identifier)
339	}
340
341	if v.RequestedDimensions != nil {
342		ok := object.Key("RequestedDimensions")
343		if err := awsAwsjson11_serializeDocumentRequestedDimensionList(v.RequestedDimensions, ok); err != nil {
344			return err
345		}
346	}
347
348	if len(v.ServiceType) > 0 {
349		ok := object.Key("ServiceType")
350		ok.String(string(v.ServiceType))
351	}
352
353	return nil
354}
355
356func awsAwsjson11_serializeOpDocumentGetResourceMetricsInput(v *GetResourceMetricsInput, value smithyjson.Value) error {
357	object := value.Object()
358	defer object.Close()
359
360	if v.EndTime != nil {
361		ok := object.Key("EndTime")
362		ok.Double(smithytime.FormatEpochSeconds(*v.EndTime))
363	}
364
365	if v.Identifier != nil {
366		ok := object.Key("Identifier")
367		ok.String(*v.Identifier)
368	}
369
370	if v.MaxResults != nil {
371		ok := object.Key("MaxResults")
372		ok.Integer(*v.MaxResults)
373	}
374
375	if v.MetricQueries != nil {
376		ok := object.Key("MetricQueries")
377		if err := awsAwsjson11_serializeDocumentMetricQueryList(v.MetricQueries, ok); err != nil {
378			return err
379		}
380	}
381
382	if v.NextToken != nil {
383		ok := object.Key("NextToken")
384		ok.String(*v.NextToken)
385	}
386
387	if v.PeriodInSeconds != nil {
388		ok := object.Key("PeriodInSeconds")
389		ok.Integer(*v.PeriodInSeconds)
390	}
391
392	if len(v.ServiceType) > 0 {
393		ok := object.Key("ServiceType")
394		ok.String(string(v.ServiceType))
395	}
396
397	if v.StartTime != nil {
398		ok := object.Key("StartTime")
399		ok.Double(smithytime.FormatEpochSeconds(*v.StartTime))
400	}
401
402	return nil
403}
404