package client import ( "fmt" "net/url" "reflect" tmjson "github.com/tendermint/tendermint/libs/json" ) func argsToURLValues(args map[string]interface{}) (url.Values, error) { values := make(url.Values) if len(args) == 0 { return values, nil } err := argsToJSON(args) if err != nil { return nil, err } for key, val := range args { values.Set(key, val.(string)) } return values, nil } func argsToJSON(args map[string]interface{}) error { for k, v := range args { rt := reflect.TypeOf(v) isByteSlice := rt.Kind() == reflect.Slice && rt.Elem().Kind() == reflect.Uint8 if isByteSlice { bytes := reflect.ValueOf(v).Bytes() args[k] = fmt.Sprintf("0x%X", bytes) continue } data, err := tmjson.Marshal(v) if err != nil { return err } args[k] = string(data) } return nil }