implement ListSymbols api

This commit is contained in:
c9s 2021-12-11 00:44:55 +08:00
parent be7e9f551a
commit 50b79cb742
4 changed files with 88 additions and 2 deletions

View File

@ -19,6 +19,7 @@ func init() {
rootCmd.AddCommand(accountsCmd)
rootCmd.AddCommand(subAccountsCmd)
rootCmd.AddCommand(symbolsCmd)
}
var rootCmd = &cobra.Command{

View File

@ -0,0 +1,24 @@
package main
import (
"github.com/sirupsen/logrus"
"github.com/spf13/cobra"
)
var symbolsCmd = &cobra.Command{
Use: "symbols",
// SilenceUsage is an option to silence usage when an error occurs.
SilenceUsage: true,
RunE: func(cmd *cobra.Command, args []string) error {
symbols, err := client.MarketDataService.ListSymbols(args...)
if err != nil {
return err
}
logrus.Infof("symbols: %+v", symbols)
return nil
},
}

View File

@ -68,9 +68,9 @@ type RestClient struct {
KeyVersion string
AccountService *AccountService
MarketDataService *MarketDataService
// TradeService *TradeService
// PublicDataService *PublicDataService
// MarketDataService *MarketDataService
}
func NewClient() *RestClient {
@ -88,9 +88,9 @@ func NewClient() *RestClient {
}
client.AccountService = &AccountService{ client: client }
client.MarketDataService = &MarketDataService{client: client}
// client.TradeService = &TradeService{client: client}
// client.PublicDataService = &PublicDataService{client: client}
// client.MarketDataService = &MarketDataService{client: client}
return client
}

View File

@ -0,0 +1,61 @@
package kucoinapi
import (
"net/url"
"github.com/c9s/bbgo/pkg/fixedpoint"
"github.com/pkg/errors"
)
type MarketDataService struct {
client *RestClient
}
type Symbol struct {
Symbol string `json:"symbol"`
Name string `json:"name"`
BaseCurrency string `json:"baseCurrency"`
QuoteCurrency string `json:"quoteCurrency"`
FeeCurrency string `json:"feeCurrency"`
Market string `json:"market"`
BaseMinSize fixedpoint.Value `json:"baseMinSize"`
QuoteMinSize fixedpoint.Value `json:"quoteMinSize"`
BaseIncrement fixedpoint.Value `json:"baseIncrement"`
QuoteIncrement fixedpoint.Value `json:"quoteIncrement"`
PriceIncrement fixedpoint.Value `json:"priceIncrement"`
PriceLimitRate fixedpoint.Value `json:"priceLimitRate"`
IsMarginEnabled bool `json:"isMarginEnabled"`
EnableTrading bool `json:"enableTrading"`
}
func (s *MarketDataService) ListSymbols(market ...string) ([]Symbol, error) {
var params = url.Values{}
if len(market) == 1 {
params["market"] = []string{market[0]}
} else if len(market) > 1 {
return nil, errors.New("symbols api only supports one market parameter")
}
req, err := s.client.newRequest("GET", "/api/v1/symbols", nil, nil)
if err != nil {
return nil, err
}
response, err := s.client.sendRequest(req)
if err != nil {
return nil, err
}
var apiResponse struct {
Code string `json:"code"`
Message string `json:"msg"`
Data []Symbol `json:"data"`
}
if err := response.DecodeJSON(&apiResponse); err != nil {
return nil, err
}
return apiResponse.Data, nil
}