mirror of
https://github.com/foomo/sesamy-go.git
synced 2025-10-16 12:35:43 +00:00
Merge pull request #61 from foomo/fix/unnecessary-url-unescape
fix: remove unnecessary url unescape
This commit is contained in:
commit
0a45237051
@ -34,23 +34,19 @@ func Decode(values url.Values, target any) error {
|
|||||||
for key, value := range values {
|
for key, value := range values {
|
||||||
// handle maps
|
// handle maps
|
||||||
if ok, err := DecodeMapValue(key, value, data); err != nil {
|
if ok, err := DecodeMapValue(key, value, data); err != nil {
|
||||||
return err
|
return errors.Wrap(err, "failed to decode map value")
|
||||||
} else if ok {
|
} else if ok {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
// handle slices
|
// handle slices
|
||||||
if ok, err := DecodeRegexValue(key, value, RegexProduct, data, ParameterItem); err != nil {
|
if ok, err := DecodeRegexValue(key, value, RegexProduct, data, ParameterItem); err != nil {
|
||||||
return err
|
return errors.Wrap(err, "failed to decode regex value")
|
||||||
} else if ok {
|
} else if ok {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
// default
|
// default
|
||||||
// v, err := url.QueryUnescape(value[0])
|
|
||||||
// if err != nil {
|
|
||||||
// return errors.Wrap(err, "failed to unescape query parameter")
|
|
||||||
// }
|
|
||||||
data[key] = value[0]
|
data[key] = value[0]
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -77,12 +73,13 @@ func DecodeMapValue(k string, v []string, data Data) (bool, error) {
|
|||||||
if _, ok := data[parts[0]]; !ok {
|
if _, ok := data[parts[0]]; !ok {
|
||||||
data[parts[0]] = map[string]any{}
|
data[parts[0]] = map[string]any{}
|
||||||
}
|
}
|
||||||
if value, ok := data[parts[0]].(map[string]any); ok {
|
if value, ok := data[parts[0]].(map[string]any); ok && len(v) > 0 {
|
||||||
v, err := url.QueryUnescape(v[0])
|
val := v[0]
|
||||||
if err != nil {
|
// gracefully try to unescape value
|
||||||
return false, err
|
if out, err := url.QueryUnescape(val); err == nil {
|
||||||
|
val = out
|
||||||
}
|
}
|
||||||
value[strings.Join(parts[1:], ".")] = v
|
value[strings.Join(parts[1:], ".")] = val
|
||||||
}
|
}
|
||||||
return true, nil
|
return true, nil
|
||||||
}
|
}
|
||||||
@ -116,11 +113,12 @@ func DecodeObjectValue(s string) (map[string]any, error) {
|
|||||||
}
|
}
|
||||||
ret := map[string]any{}
|
ret := map[string]any{}
|
||||||
for _, part := range strings.Split(s, "~") {
|
for _, part := range strings.Split(s, "~") {
|
||||||
v, err := url.QueryUnescape(part[2:])
|
val := part[2:]
|
||||||
if err != nil {
|
// gracefully try to unescape value
|
||||||
return nil, err
|
if out, err := url.QueryUnescape(val); err == nil {
|
||||||
|
val = out
|
||||||
}
|
}
|
||||||
ret[part[0:2]] = v
|
ret[part[0:2]] = val
|
||||||
}
|
}
|
||||||
return ret, nil
|
return ret, nil
|
||||||
}
|
}
|
||||||
|
|||||||
@ -29,7 +29,6 @@ func TestEncode(t *testing.T) {
|
|||||||
}
|
}
|
||||||
for _, tt := range tests {
|
for _, tt := range tests {
|
||||||
t.Run(tt.name, func(t *testing.T) {
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
// x, err := url.QueryUnescape(tt.args)
|
|
||||||
values, err := url.ParseQuery(tt.args)
|
values, err := url.ParseQuery(tt.args)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
var event gtag.Payload
|
var event gtag.Payload
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user