MCPcopy
hub / github.com/daptin/daptin / encodeQuery

Function encodeQuery

form_test.go:27–50  ·  view source on GitHub ↗

encodeQuery is a recursive function that generates URL-encoded query strings

(key string, value interface{}, v url.Values)

Source from the content-addressed store, hash-verified

25
26// encodeQuery is a recursive function that generates URL-encoded query strings
27func encodeQuery(key string, value interface{}, v url.Values) {
28 rv := reflect.ValueOf(value)
29
30 switch rv.Kind() {
31 case reflect.Map:
32 for _, k := range rv.MapKeys() {
33 mapKey := fmt.Sprintf("%v", k)
34 encodeQuery(fmt.Sprintf("%s[%s]", key, mapKey), rv.MapIndex(k).Interface(), v)
35 }
36 case reflect.Slice, reflect.Array:
37 for i := 0; i < rv.Len(); i++ {
38 encodeQuery(fmt.Sprintf("%s[%d]", key, i), rv.Index(i).Interface(), v)
39 }
40 case reflect.Struct:
41 for i := 0; i < rv.NumField(); i++ {
42 field := rv.Type().Field(i)
43 fieldName := field.Name
44 fieldValue := rv.Field(i).Interface()
45 encodeQuery(fmt.Sprintf("%s.%s", key, fieldName), fieldValue, v)
46 }
47 default:
48 v.Add(key, fmt.Sprintf("%v", value))
49 }
50}
51
52// ToURLQuery converts a Go object into a x-www-form-urlencoded query string
53func ToURLQuery(input interface{}) string {

Callers 1

ToURLQueryFunction · 0.70

Calls 3

LenMethod · 0.80
TypeMethod · 0.80
AddMethod · 0.80

Tested by

no test coverage detected