You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
107 lines
2.5 KiB
107 lines
2.5 KiB
package query
|
|
|
|
import (
|
|
"math/big"
|
|
"net/url"
|
|
|
|
"github.com/aws/smithy-go/encoding/httpbinding"
|
|
)
|
|
|
|
// Value represents a Query Value type.
|
|
type Value struct {
|
|
// The query values to add the value to.
|
|
values url.Values
|
|
// The value's key, which will form the prefix for complex types.
|
|
key string
|
|
// Whether the value should be flattened or not if it's a flattenable type.
|
|
flat bool
|
|
queryValue httpbinding.QueryValue
|
|
}
|
|
|
|
func newValue(values url.Values, key string, flat bool) Value {
|
|
return Value{
|
|
values: values,
|
|
key: key,
|
|
flat: flat,
|
|
queryValue: httpbinding.NewQueryValue(values, key, false),
|
|
}
|
|
}
|
|
|
|
func newBaseValue(values url.Values) Value {
|
|
return Value{
|
|
values: values,
|
|
queryValue: httpbinding.NewQueryValue(nil, "", false),
|
|
}
|
|
}
|
|
|
|
// Array returns a new Array encoder.
|
|
func (qv Value) Array(locationName string) *Array {
|
|
return newArray(qv.values, qv.key, qv.flat, locationName)
|
|
}
|
|
|
|
// Object returns a new Object encoder.
|
|
func (qv Value) Object() *Object {
|
|
return newObject(qv.values, qv.key)
|
|
}
|
|
|
|
// Map returns a new Map encoder.
|
|
func (qv Value) Map(keyLocationName string, valueLocationName string) *Map {
|
|
return newMap(qv.values, qv.key, qv.flat, keyLocationName, valueLocationName)
|
|
}
|
|
|
|
// Base64EncodeBytes encodes v as a base64 query string value.
|
|
// This is intended to enable compatibility with the JSON encoder.
|
|
func (qv Value) Base64EncodeBytes(v []byte) {
|
|
qv.queryValue.Blob(v)
|
|
}
|
|
|
|
// Boolean encodes v as a query string value
|
|
func (qv Value) Boolean(v bool) {
|
|
qv.queryValue.Boolean(v)
|
|
}
|
|
|
|
// String encodes v as a query string value
|
|
func (qv Value) String(v string) {
|
|
qv.queryValue.String(v)
|
|
}
|
|
|
|
// Byte encodes v as a query string value
|
|
func (qv Value) Byte(v int8) {
|
|
qv.queryValue.Byte(v)
|
|
}
|
|
|
|
// Short encodes v as a query string value
|
|
func (qv Value) Short(v int16) {
|
|
qv.queryValue.Short(v)
|
|
}
|
|
|
|
// Integer encodes v as a query string value
|
|
func (qv Value) Integer(v int32) {
|
|
qv.queryValue.Integer(v)
|
|
}
|
|
|
|
// Long encodes v as a query string value
|
|
func (qv Value) Long(v int64) {
|
|
qv.queryValue.Long(v)
|
|
}
|
|
|
|
// Float encodes v as a query string value
|
|
func (qv Value) Float(v float32) {
|
|
qv.queryValue.Float(v)
|
|
}
|
|
|
|
// Double encodes v as a query string value
|
|
func (qv Value) Double(v float64) {
|
|
qv.queryValue.Double(v)
|
|
}
|
|
|
|
// BigInteger encodes v as a query string value
|
|
func (qv Value) BigInteger(v *big.Int) {
|
|
qv.queryValue.BigInteger(v)
|
|
}
|
|
|
|
// BigDecimal encodes v as a query string value
|
|
func (qv Value) BigDecimal(v *big.Float) {
|
|
qv.queryValue.BigDecimal(v)
|
|
}
|