qbtrade/pkg/exchange/kucoin/generate_symbol_map.go
2024-06-27 22:42:38 +08:00

78 lines
1.2 KiB
Go

//go:build ignore
// +build ignore
package main
import (
"encoding/json"
"log"
"net/http"
"os"
"strings"
"text/template"
"git.qtrade.icu/lychiyu/qbtrade/pkg/exchange/kucoin/kucoinapi"
)
var packageTemplate = template.Must(template.New("").Parse(`// Code generated by go generate; DO NOT EDIT.
package kucoin
var symbolMap = map[string]string{
{{- range $k, $v := . }}
{{ printf "%q" $k }}: {{ printf "%q" $v }},
{{- end }}
}
func toLocalSymbol(symbol string) string {
s, ok := symbolMap[symbol]
if ok {
return s
}
return symbol
}
`))
type Market struct {
Symbol string `json:"symbol"`
}
type ApiResponse struct {
Data []Market `json:"data"`
}
func main() {
const apiUrl = kucoinapi.RestBaseURL + "/v1/symbols"
resp, err := http.Get(apiUrl)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
r := &ApiResponse{}
if err := json.NewDecoder(resp.Body).Decode(r); err != nil {
log.Fatal(err)
}
var data = map[string]string{}
for _, m := range r.Data {
key := strings.ReplaceAll(strings.ToUpper(strings.TrimSpace(m.Symbol)), "-", "")
data[key] = m.Symbol
}
f, err := os.Create("symbols.go")
if err != nil {
log.Fatal(err)
}
defer f.Close()
err = packageTemplate.Execute(f, data)
if err != nil {
log.Fatal(err)
}
}