Struct: query.Encoder

import "../ibm-cos-sdk-go-v2/aws/protocol/query"

Overview

Encoder is a Query encoder that supports construction of Query body values using methods.

Implemented Interfaces

types.AnalyticsFilter, v4.HTTPPresigner, s3.HTTPPresignerV4, types.MetricsFilter, s3.PresignPost, arn.S3ObjectLambdaARN, types.SelectObjectContentEventStream

Constructor Functions collapse

Method Summary collapse

Methods included from query.Value

query.Value.Array(), query.Value.Base64EncodeBytes(), query.Value.BigDecimal(), query.Value.BigInteger(), query.Value.Boolean(), query.Value.Byte(), query.Value.Double(), query.Value.Float(), query.Value.Integer(), query.Value.Long(), query.Value.Map(), query.Value.Object(), query.Value.Short(), query.Value.String()

Function Details

func NewEncoder(writer io.Writer) *Encoder

NewEncoder returns a new Query body encoder



19
20
21
22
23
24
25
26
// File 'aws/protocol/query/encoder.go', line 19

func NewEncoder(writer io.Writer) *Encoder { values := url.Values{} return &Encoder{ values: values, writer: writer, Value: newBaseValue(values), } }

Method Details

func (e Encoder) Encode() error

Encode returns the []byte slice representing the current state of the Query encoder.



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
// File 'aws/protocol/query/encoder.go', line 30

func (e Encoder) Encode() error { ws, ok := e.writer.(interface{ WriteString(string) (int, error) }) if !ok { // Fall back to less optimal byte slice casting if WriteString isn't available. ws = &wrapWriteString{writer: e.writer} } // Get the keys and sort them to have a stable output keys := make([]string, 0, len(e.values)) for k := range e.values { keys = append(keys, k) } sort.Strings(keys) isFirstEntry := true for _, key := range keys { queryValues := e.values[key] escapedKey := url.QueryEscape(key) for _, value := range queryValues { if !isFirstEntry { if _, err := ws.WriteString(`&`); err != nil { return err } } else { isFirstEntry = false } if _, err := ws.WriteString(escapedKey); err != nil { return err } if _, err := ws.WriteString(`=`); err != nil { return err } if _, err := ws.WriteString(url.QueryEscape(value)); err != nil { return err } } } return nil }