github.com/anthropics/anthropic-sdk-go@v1.70.1/internal/apiquery/query.go (about) 1 package apiquery 2 3 import ( 4 "net/url" 5 "reflect" 6 "time" 7 ) 8 9 func MarshalWithSettings(value any, settings QuerySettings) (url.Values, error) { 10 e := encoder{time.RFC3339, true, settings} 11 kv := url.Values{} 12 val := reflect.ValueOf(value) 13 if !val.IsValid() { 14 return nil, nil 15 } 16 typ := val.Type() 17 18 pairs, err := e.typeEncoder(typ)("", val) 19 if err != nil { 20 return nil, err 21 } 22 for _, pair := range pairs { 23 kv.Add(pair.key, pair.value) 24 } 25 return kv, nil 26 } 27 28 func Marshal(value any) (url.Values, error) { 29 return MarshalWithSettings(value, QuerySettings{}) 30 } 31 32 type Queryer interface { 33 URLQuery() (url.Values, error) 34 } 35 36 type QuerySettings struct { 37 NestedFormat NestedQueryFormat 38 ArrayFormat ArrayQueryFormat 39 } 40 41 type NestedQueryFormat int 42 43 const ( 44 NestedQueryFormatBrackets NestedQueryFormat = iota 45 NestedQueryFormatDots 46 ) 47 48 type ArrayQueryFormat int 49 50 const ( 51 ArrayQueryFormatComma ArrayQueryFormat = iota 52 ArrayQueryFormatRepeat 53 ArrayQueryFormatIndices 54 ArrayQueryFormatBrackets 55 )