Files
gocryptotrader/exchanges/mock/common.go
Adrian Gallagher 4651af5767 modernise: Run new gopls modernise tool against the codebase and fix minor issues (#1826)
* modernise: Run new gopls modernise tool against codebase

* Address shazbert's nits

* apichecker, gctcli: Simplify HTML scraping functions and improve depth limit handling

* refactor: Create minSyncInterval const and update order book limit handling for binance and binanceUS

* refactor: Various slice usage improvements and rename TODO

* tranches: Revert deleteByID changes due to performance decrease

Shazbert was a F1 driver in a past lifetime 🏎️

* tranches: Simply retrieve copy

Thanks to shazbert

* documentation: Sort contributors list by contributions

* tranches: Remove deadcode in deleteByID
2025-03-21 09:17:10 +11:00

73 lines
1.5 KiB
Go

package mock
import (
"errors"
"fmt"
"log"
"net/url"
"reflect"
"strconv"
"strings"
"github.com/thrasher-corp/gocryptotrader/encoding/json"
)
// MatchURLVals matches url.Value query strings
func MatchURLVals(v1, v2 url.Values) bool {
if len(v1) != len(v2) {
return false
}
if len(v1) == 0 && len(v2) == 0 {
return true
}
for key, val := range v1 {
if key == "nonce" || key == "signature" || key == "timestamp" || key == "tonce" || key == "key" { // delta values
if _, ok := v2[key]; !ok {
return false
}
continue
}
if val2, ok := v2[key]; ok {
if strings.Join(val2, "") == strings.Join(val, "") {
continue
}
}
return false
}
return true
}
// DeriveURLValsFromJSONMap gets url vals from a map[string]string encoded JSON body
func DeriveURLValsFromJSONMap(payload []byte) (url.Values, error) {
vals := url.Values{}
if len(payload) == 0 {
return vals, nil
}
intermediary := make(map[string]any)
err := json.Unmarshal(payload, &intermediary)
if err != nil {
return vals, err
}
for k, v := range intermediary {
switch val := v.(type) {
case string:
vals.Add(k, val)
case bool:
vals.Add(k, strconv.FormatBool(val))
case float64:
vals.Add(k, strconv.FormatFloat(val, 'f', -1, 64))
case map[string]any, []any, nil:
vals.Add(k, fmt.Sprintf("%v", val))
default:
log.Println(reflect.TypeOf(val))
return vals, errors.New("unhandled conversion type, please add as needed")
}
}
return vals, nil
}