mirror of
https://github.com/d0zingcat/gocryptotrader.git
synced 2026-05-23 23:16:49 +00:00
exchanges/wrappers: Refactor fetch orderbook/ticker/account info funcs (#1440)
* acrost: Pull thread, examine * fix tests * linter * fix_linter * revert rm ctx param to limit breakages when merging usptream * linter fix * Add in priority update grouping so that tests pass * Update cmd/exchange_wrapper_standards/exchange_wrapper_standards_test.go Co-authored-by: Scott <gloriousCode@users.noreply.github.com> * glorious nits * fixed spelling * whoopsie * aanother whoops * glorious: NITTERS! * glorious: further nitters * srry linter gods * glorious: nits continued * sub test p ara lel * drop main t.Parallel * fix whoops * wrappertests: use context with cancel (test) * linter: fix * ensure primary execution * kucoin test fix * revert standards test changes and bypass non critical errors * rm single override * wrap exported error for accounts * thrasher: nits ch name * gk: nits * gk: nits FetchTickerCached -> GetCachedTicker * gk: nits rn FetchOrderbookCached -> GetCachedOrderbook * gk: nits rn FetchAccountInfoCached -> GetCachedAccountInfo * linter: fix * gk: nits * thrasher: nitters 1 * thrasher: nitters tmpls * gk: nitter --------- Co-authored-by: shazbert <ryan.oharareid@thrasher.io> Co-authored-by: Scott <gloriousCode@users.noreply.github.com>
This commit is contained in:
@@ -392,7 +392,7 @@ func (s *RPCServer) GetExchangeInfo(_ context.Context, r *gctrpc.GenericExchange
|
||||
|
||||
// GetTicker returns the ticker for a specified exchange, currency pair and
|
||||
// asset type
|
||||
func (s *RPCServer) GetTicker(ctx context.Context, r *gctrpc.GetTickerRequest) (*gctrpc.TickerResponse, error) {
|
||||
func (s *RPCServer) GetTicker(_ context.Context, r *gctrpc.GetTickerRequest) (*gctrpc.TickerResponse, error) {
|
||||
a, err := asset.New(r.AssetType)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -403,24 +403,14 @@ func (s *RPCServer) GetTicker(ctx context.Context, r *gctrpc.GetTickerRequest) (
|
||||
return nil, err
|
||||
}
|
||||
|
||||
err = checkParams(r.Exchange, e, a, currency.Pair{
|
||||
Delimiter: r.Pair.Delimiter,
|
||||
Base: currency.NewCode(r.Pair.Base),
|
||||
Quote: currency.NewCode(r.Pair.Quote),
|
||||
})
|
||||
pair := currency.NewPairWithDelimiter(r.Pair.Base, r.Pair.Quote, r.Pair.Delimiter)
|
||||
|
||||
err = checkParams(r.Exchange, e, a, pair)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
t, err := s.GetSpecificTicker(ctx,
|
||||
currency.Pair{
|
||||
Delimiter: r.Pair.Delimiter,
|
||||
Base: currency.NewCode(r.Pair.Base),
|
||||
Quote: currency.NewCode(r.Pair.Quote),
|
||||
},
|
||||
r.Exchange,
|
||||
a,
|
||||
)
|
||||
t, err := e.GetCachedTicker(pair, a)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -442,18 +432,13 @@ func (s *RPCServer) GetTicker(ctx context.Context, r *gctrpc.GetTickerRequest) (
|
||||
|
||||
// GetTickers returns a list of tickers for all enabled exchanges and all
|
||||
// enabled currency pairs
|
||||
func (s *RPCServer) GetTickers(ctx context.Context, _ *gctrpc.GetTickersRequest) (*gctrpc.GetTickersResponse, error) {
|
||||
activeTickers := s.GetAllActiveTickers(ctx)
|
||||
func (s *RPCServer) GetTickers(_ context.Context, _ *gctrpc.GetTickersRequest) (*gctrpc.GetTickersResponse, error) {
|
||||
activeTickers := s.GetAllActiveTickers()
|
||||
tickers := make([]*gctrpc.Tickers, len(activeTickers))
|
||||
|
||||
for x := range activeTickers {
|
||||
t := &gctrpc.Tickers{
|
||||
Exchange: activeTickers[x].ExchangeName,
|
||||
Tickers: make([]*gctrpc.TickerResponse, len(activeTickers[x].ExchangeValues)),
|
||||
}
|
||||
for y := range activeTickers[x].ExchangeValues {
|
||||
val := activeTickers[x].ExchangeValues[y]
|
||||
t.Tickers[y] = &gctrpc.TickerResponse{
|
||||
ticks := make([]*gctrpc.TickerResponse, len(activeTickers[x].ExchangeValues))
|
||||
for y, val := range activeTickers[x].ExchangeValues {
|
||||
ticks[y] = &gctrpc.TickerResponse{
|
||||
Pair: &gctrpc.CurrencyPair{
|
||||
Delimiter: val.Pair.Delimiter,
|
||||
Base: val.Pair.Base.String(),
|
||||
@@ -469,7 +454,7 @@ func (s *RPCServer) GetTickers(ctx context.Context, _ *gctrpc.GetTickersRequest)
|
||||
PriceAth: val.PriceATH,
|
||||
}
|
||||
}
|
||||
tickers[x] = t
|
||||
tickers[x] = &gctrpc.Tickers{Exchange: activeTickers[x].ExchangeName, Tickers: ticks}
|
||||
}
|
||||
|
||||
return &gctrpc.GetTickersResponse{Tickers: tickers}, nil
|
||||
@@ -477,46 +462,33 @@ func (s *RPCServer) GetTickers(ctx context.Context, _ *gctrpc.GetTickersRequest)
|
||||
|
||||
// GetOrderbook returns an orderbook for a specific exchange, currency pair
|
||||
// and asset type
|
||||
func (s *RPCServer) GetOrderbook(ctx context.Context, r *gctrpc.GetOrderbookRequest) (*gctrpc.OrderbookResponse, error) {
|
||||
func (s *RPCServer) GetOrderbook(_ context.Context, r *gctrpc.GetOrderbookRequest) (*gctrpc.OrderbookResponse, error) {
|
||||
a, err := asset.New(r.AssetType)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
ob, err := s.GetSpecificOrderbook(ctx,
|
||||
currency.Pair{
|
||||
Delimiter: r.Pair.Delimiter,
|
||||
Base: currency.NewCode(r.Pair.Base),
|
||||
Quote: currency.NewCode(r.Pair.Quote),
|
||||
},
|
||||
r.Exchange,
|
||||
a,
|
||||
)
|
||||
e, err := s.GetExchangeByName(r.Exchange)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
bids := make([]*gctrpc.OrderbookItem, 0, len(ob.Bids))
|
||||
asks := make([]*gctrpc.OrderbookItem, 0, len(ob.Asks))
|
||||
ch := make(chan bool)
|
||||
pair := currency.NewPairWithDelimiter(r.Pair.Base, r.Pair.Quote, r.Pair.Delimiter)
|
||||
|
||||
go func() {
|
||||
for _, b := range ob.Bids {
|
||||
bids = append(bids, &gctrpc.OrderbookItem{
|
||||
Amount: b.Amount,
|
||||
Price: b.Price,
|
||||
})
|
||||
}
|
||||
ch <- true
|
||||
}()
|
||||
|
||||
for _, a := range ob.Asks {
|
||||
asks = append(asks, &gctrpc.OrderbookItem{
|
||||
Amount: a.Amount,
|
||||
Price: a.Price,
|
||||
})
|
||||
ob, err := e.GetCachedOrderbook(pair, a)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
bids := make([]*gctrpc.OrderbookItem, len(ob.Bids))
|
||||
for x := range ob.Bids {
|
||||
bids[x] = &gctrpc.OrderbookItem{Amount: ob.Bids[x].Amount, Price: ob.Bids[x].Price}
|
||||
}
|
||||
|
||||
asks := make([]*gctrpc.OrderbookItem, len(ob.Asks))
|
||||
for x := range ob.Asks {
|
||||
asks[x] = &gctrpc.OrderbookItem{Amount: ob.Asks[x].Amount, Price: ob.Asks[x].Price}
|
||||
}
|
||||
<-ch
|
||||
|
||||
resp := &gctrpc.OrderbookResponse{
|
||||
Pair: r.Pair,
|
||||
@@ -531,67 +503,50 @@ func (s *RPCServer) GetOrderbook(ctx context.Context, r *gctrpc.GetOrderbookRequ
|
||||
|
||||
// GetOrderbooks returns a list of orderbooks for all enabled exchanges and all
|
||||
// enabled currency pairs
|
||||
func (s *RPCServer) GetOrderbooks(ctx context.Context, _ *gctrpc.GetOrderbooksRequest) (*gctrpc.GetOrderbooksResponse, error) {
|
||||
func (s *RPCServer) GetOrderbooks(_ context.Context, _ *gctrpc.GetOrderbooksRequest) (*gctrpc.GetOrderbooksResponse, error) {
|
||||
exchanges, err := s.ExchangeManager.GetExchanges()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
obResponse := make([]*gctrpc.Orderbooks, 0, len(exchanges))
|
||||
var obs []*gctrpc.OrderbookResponse
|
||||
for x := range exchanges {
|
||||
if !exchanges[x].IsEnabled() {
|
||||
for _, e := range exchanges {
|
||||
if !e.IsEnabled() {
|
||||
continue
|
||||
}
|
||||
assets := exchanges[x].GetAssetTypes(true)
|
||||
exchName := exchanges[x].GetName()
|
||||
for y := range assets {
|
||||
currencies, err := exchanges[x].GetEnabledPairs(assets[y])
|
||||
for _, a := range e.GetAssetTypes(true) {
|
||||
pairs, err := e.GetEnabledPairs(a)
|
||||
if err != nil {
|
||||
log.Errorf(log.RESTSys,
|
||||
"Exchange %s could not retrieve enabled currencies. Err: %s\n",
|
||||
exchName,
|
||||
err)
|
||||
log.Errorf(log.RESTSys, "Exchange %s could not retrieve enabled currencies. Err: %s\n", e.GetName(), err)
|
||||
continue
|
||||
}
|
||||
for z := range currencies {
|
||||
resp, err := exchanges[x].FetchOrderbook(ctx, currencies[z], assets[y])
|
||||
for _, pair := range pairs {
|
||||
resp, err := e.GetCachedOrderbook(pair, a)
|
||||
if err != nil {
|
||||
log.Errorf(log.RESTSys,
|
||||
"Exchange %s failed to retrieve %s orderbook. Err: %s\n", exchName,
|
||||
currencies[z].String(),
|
||||
err)
|
||||
log.Errorf(log.RESTSys, "Exchange %s failed to retrieve %s orderbook. Err: %s\n", e.GetName(), pair, err)
|
||||
continue
|
||||
}
|
||||
ob := &gctrpc.OrderbookResponse{
|
||||
Pair: &gctrpc.CurrencyPair{
|
||||
Delimiter: currencies[z].Delimiter,
|
||||
Base: currencies[z].Base.String(),
|
||||
Quote: currencies[z].Quote.String(),
|
||||
Delimiter: pair.Delimiter,
|
||||
Base: pair.Base.String(),
|
||||
Quote: pair.Quote.String(),
|
||||
},
|
||||
AssetType: assets[y].String(),
|
||||
AssetType: a.String(),
|
||||
LastUpdated: s.unixTimestamp(resp.LastUpdated),
|
||||
Bids: make([]*gctrpc.OrderbookItem, len(resp.Bids)),
|
||||
Asks: make([]*gctrpc.OrderbookItem, len(resp.Asks)),
|
||||
}
|
||||
for i := range resp.Bids {
|
||||
ob.Bids[i] = &gctrpc.OrderbookItem{
|
||||
Amount: resp.Bids[i].Amount,
|
||||
Price: resp.Bids[i].Price,
|
||||
}
|
||||
ob.Bids[i] = &gctrpc.OrderbookItem{Amount: resp.Bids[i].Amount, Price: resp.Bids[i].Price}
|
||||
}
|
||||
for i := range resp.Asks {
|
||||
ob.Asks[i] = &gctrpc.OrderbookItem{
|
||||
Amount: resp.Asks[i].Amount,
|
||||
Price: resp.Asks[i].Price,
|
||||
}
|
||||
ob.Asks[i] = &gctrpc.OrderbookItem{Amount: resp.Asks[i].Amount, Price: resp.Asks[i].Price}
|
||||
}
|
||||
obs = append(obs, ob)
|
||||
}
|
||||
}
|
||||
obResponse = append(obResponse, &gctrpc.Orderbooks{
|
||||
Exchange: exchanges[x].GetName(),
|
||||
Orderbooks: obs,
|
||||
})
|
||||
obResponse = append(obResponse, &gctrpc.Orderbooks{Exchange: e.GetName(), Orderbooks: obs})
|
||||
}
|
||||
|
||||
return &gctrpc.GetOrderbooksResponse{Orderbooks: obResponse}, nil
|
||||
@@ -614,7 +569,7 @@ func (s *RPCServer) GetAccountInfo(ctx context.Context, r *gctrpc.GetAccountInfo
|
||||
return nil, err
|
||||
}
|
||||
|
||||
resp, err := exch.FetchAccountInfo(ctx, assetType)
|
||||
resp, err := exch.GetCachedAccountInfo(ctx, assetType)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -692,7 +647,7 @@ func (s *RPCServer) GetAccountInfoStream(r *gctrpc.GetAccountInfoRequest, stream
|
||||
return err
|
||||
}
|
||||
|
||||
initAcc, err := exch.FetchAccountInfo(stream.Context(), assetType)
|
||||
initAcc, err := exch.GetCachedAccountInfo(stream.Context(), assetType)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -1143,12 +1098,6 @@ func (s *RPCServer) GetOrder(ctx context.Context, r *gctrpc.GetOrderRequest) (*g
|
||||
return nil, errCurrencyPairUnset
|
||||
}
|
||||
|
||||
pair := currency.Pair{
|
||||
Delimiter: r.Pair.Delimiter,
|
||||
Base: currency.NewCode(r.Pair.Base),
|
||||
Quote: currency.NewCode(r.Pair.Quote),
|
||||
}
|
||||
|
||||
a, err := asset.New(r.Asset)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -1159,6 +1108,8 @@ func (s *RPCServer) GetOrder(ctx context.Context, r *gctrpc.GetOrderRequest) (*g
|
||||
return nil, err
|
||||
}
|
||||
|
||||
pair := currency.NewPairWithDelimiter(r.Pair.Base, r.Pair.Quote, r.Pair.Delimiter)
|
||||
|
||||
err = checkParams(r.Exchange, exch, a, pair)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -1234,17 +1185,13 @@ func (s *RPCServer) SubmitOrder(ctx context.Context, r *gctrpc.SubmitOrderReques
|
||||
return nil, errCurrencyPairUnset
|
||||
}
|
||||
|
||||
p := currency.Pair{
|
||||
Delimiter: r.Pair.Delimiter,
|
||||
Base: currency.NewCode(r.Pair.Base),
|
||||
Quote: currency.NewCode(r.Pair.Quote),
|
||||
}
|
||||
|
||||
exch, err := s.GetExchangeByName(r.Exchange)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
p := currency.NewPairWithDelimiter(r.Pair.Base, r.Pair.Quote, r.Pair.Delimiter)
|
||||
|
||||
err = checkParams(r.Exchange, exch, a, p)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -1299,28 +1246,24 @@ func (s *RPCServer) SubmitOrder(ctx context.Context, r *gctrpc.SubmitOrderReques
|
||||
|
||||
// SimulateOrder simulates an order specified by exchange, currency pair and asset
|
||||
// type
|
||||
func (s *RPCServer) SimulateOrder(ctx context.Context, r *gctrpc.SimulateOrderRequest) (*gctrpc.SimulateOrderResponse, error) {
|
||||
func (s *RPCServer) SimulateOrder(_ context.Context, r *gctrpc.SimulateOrderRequest) (*gctrpc.SimulateOrderResponse, error) {
|
||||
if r.Pair == nil {
|
||||
return nil, errCurrencyPairUnset
|
||||
}
|
||||
|
||||
p := currency.Pair{
|
||||
Delimiter: r.Pair.Delimiter,
|
||||
Base: currency.NewCode(r.Pair.Base),
|
||||
Quote: currency.NewCode(r.Pair.Quote),
|
||||
}
|
||||
|
||||
exch, err := s.GetExchangeByName(r.Exchange)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
p := currency.NewPairWithDelimiter(r.Pair.Base, r.Pair.Quote, r.Pair.Delimiter)
|
||||
|
||||
err = checkParams(r.Exchange, exch, asset.Spot, p)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
o, err := exch.FetchOrderbook(ctx, p, asset.Spot)
|
||||
o, err := exch.GetCachedOrderbook(p, asset.Spot)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -1354,17 +1297,11 @@ func (s *RPCServer) SimulateOrder(ctx context.Context, r *gctrpc.SimulateOrderRe
|
||||
|
||||
// WhaleBomb finds the amount required to reach a specific price target for a given exchange, pair
|
||||
// and asset type
|
||||
func (s *RPCServer) WhaleBomb(ctx context.Context, r *gctrpc.WhaleBombRequest) (*gctrpc.SimulateOrderResponse, error) {
|
||||
func (s *RPCServer) WhaleBomb(_ context.Context, r *gctrpc.WhaleBombRequest) (*gctrpc.SimulateOrderResponse, error) {
|
||||
if r.Pair == nil {
|
||||
return nil, errCurrencyPairUnset
|
||||
}
|
||||
|
||||
p := currency.Pair{
|
||||
Delimiter: r.Pair.Delimiter,
|
||||
Base: currency.NewCode(r.Pair.Base),
|
||||
Quote: currency.NewCode(r.Pair.Quote),
|
||||
}
|
||||
|
||||
exch, err := s.GetExchangeByName(r.Exchange)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -1375,12 +1312,14 @@ func (s *RPCServer) WhaleBomb(ctx context.Context, r *gctrpc.WhaleBombRequest) (
|
||||
return nil, err
|
||||
}
|
||||
|
||||
p := currency.NewPairWithDelimiter(r.Pair.Base, r.Pair.Quote, r.Pair.Delimiter)
|
||||
|
||||
err = checkParams(r.Exchange, exch, a, p)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
o, err := exch.FetchOrderbook(ctx, p, a)
|
||||
o, err := exch.GetCachedOrderbook(p, a)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -1418,12 +1357,6 @@ func (s *RPCServer) CancelOrder(ctx context.Context, r *gctrpc.CancelOrderReques
|
||||
return nil, errCurrencyPairUnset
|
||||
}
|
||||
|
||||
p := currency.Pair{
|
||||
Delimiter: r.Pair.Delimiter,
|
||||
Base: currency.NewCode(r.Pair.Base),
|
||||
Quote: currency.NewCode(r.Pair.Quote),
|
||||
}
|
||||
|
||||
a, err := asset.New(r.AssetType)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -1434,6 +1367,8 @@ func (s *RPCServer) CancelOrder(ctx context.Context, r *gctrpc.CancelOrderReques
|
||||
return nil, err
|
||||
}
|
||||
|
||||
p := currency.NewPairWithDelimiter(r.Pair.Base, r.Pair.Quote, r.Pair.Delimiter)
|
||||
|
||||
err = checkParams(r.Exchange, exch, a, p)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -1464,12 +1399,6 @@ func (s *RPCServer) CancelOrder(ctx context.Context, r *gctrpc.CancelOrderReques
|
||||
|
||||
// CancelBatchOrders cancels an orders specified by exchange, currency pair and asset type
|
||||
func (s *RPCServer) CancelBatchOrders(ctx context.Context, r *gctrpc.CancelBatchOrdersRequest) (*gctrpc.CancelBatchOrdersResponse, error) {
|
||||
pair := currency.Pair{
|
||||
Delimiter: r.Pair.Delimiter,
|
||||
Base: currency.NewCode(r.Pair.Base),
|
||||
Quote: currency.NewCode(r.Pair.Quote),
|
||||
}
|
||||
|
||||
assetType, err := asset.New(r.AssetType)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -1480,6 +1409,8 @@ func (s *RPCServer) CancelBatchOrders(ctx context.Context, r *gctrpc.CancelBatch
|
||||
return nil, err
|
||||
}
|
||||
|
||||
pair := currency.NewPairWithDelimiter(r.Pair.Base, r.Pair.Quote, r.Pair.Delimiter)
|
||||
|
||||
err = checkParams(r.Exchange, exch, assetType, pair)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -1545,17 +1476,14 @@ func (s *RPCServer) ModifyOrder(ctx context.Context, r *gctrpc.ModifyOrderReques
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
pair := currency.Pair{
|
||||
Delimiter: r.Pair.Delimiter,
|
||||
Base: currency.NewCode(r.Pair.Base),
|
||||
Quote: currency.NewCode(r.Pair.Quote),
|
||||
}
|
||||
|
||||
exch, err := s.GetExchangeByName(r.Exchange)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
pair := currency.NewPairWithDelimiter(r.Pair.Base, r.Pair.Quote, r.Pair.Delimiter)
|
||||
|
||||
err = checkParams(r.Exchange, exch, assetType, pair)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -2139,17 +2067,13 @@ func (s *RPCServer) GetOrderbookStream(r *gctrpc.GetOrderbookStreamRequest, stre
|
||||
return err
|
||||
}
|
||||
|
||||
p := currency.Pair{
|
||||
Delimiter: r.Pair.Delimiter,
|
||||
Base: currency.NewCode(r.Pair.Base),
|
||||
Quote: currency.NewCode(r.Pair.Quote),
|
||||
}
|
||||
|
||||
exch, err := s.GetExchangeByName(r.Exchange)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
p := currency.NewPairWithDelimiter(r.Pair.Base, r.Pair.Quote, r.Pair.Delimiter)
|
||||
|
||||
err = checkParams(r.Exchange, exch, a, p)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -2452,11 +2376,6 @@ func (s *RPCServer) GetHistoricCandles(ctx context.Context, r *gctrpc.GetHistori
|
||||
if r.Pair == nil {
|
||||
return nil, errCurrencyPairUnset
|
||||
}
|
||||
pair := currency.Pair{
|
||||
Delimiter: r.Pair.Delimiter,
|
||||
Base: currency.NewCode(r.Pair.Base),
|
||||
Quote: currency.NewCode(r.Pair.Quote),
|
||||
}
|
||||
|
||||
a, err := asset.New(r.AssetType)
|
||||
if err != nil {
|
||||
@@ -2468,6 +2387,8 @@ func (s *RPCServer) GetHistoricCandles(ctx context.Context, r *gctrpc.GetHistori
|
||||
return nil, err
|
||||
}
|
||||
|
||||
pair := currency.NewPairWithDelimiter(r.Pair.Base, r.Pair.Quote, r.Pair.Delimiter)
|
||||
|
||||
err = checkParams(r.Exchange, exch, a, pair)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -3185,12 +3106,6 @@ func (s *RPCServer) GetSavedTrades(_ context.Context, r *gctrpc.GetSavedTradesRe
|
||||
return nil, errInvalidArguments
|
||||
}
|
||||
|
||||
p := currency.Pair{
|
||||
Delimiter: r.Pair.Delimiter,
|
||||
Base: currency.NewCode(r.Pair.Base),
|
||||
Quote: currency.NewCode(r.Pair.Quote),
|
||||
}
|
||||
|
||||
a, err := asset.New(r.AssetType)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -3201,6 +3116,8 @@ func (s *RPCServer) GetSavedTrades(_ context.Context, r *gctrpc.GetSavedTradesRe
|
||||
return nil, err
|
||||
}
|
||||
|
||||
p := currency.NewPairWithDelimiter(r.Pair.Base, r.Pair.Quote, r.Pair.Delimiter)
|
||||
|
||||
err = checkParams(r.Exchange, exch, a, p)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -3261,11 +3178,6 @@ func (s *RPCServer) ConvertTradesToCandles(_ context.Context, r *gctrpc.ConvertT
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
p := currency.Pair{
|
||||
Delimiter: r.Pair.Delimiter,
|
||||
Base: currency.NewCode(r.Pair.Base),
|
||||
Quote: currency.NewCode(r.Pair.Quote),
|
||||
}
|
||||
|
||||
a, err := asset.New(r.AssetType)
|
||||
if err != nil {
|
||||
@@ -3277,6 +3189,8 @@ func (s *RPCServer) ConvertTradesToCandles(_ context.Context, r *gctrpc.ConvertT
|
||||
return nil, err
|
||||
}
|
||||
|
||||
p := currency.NewPairWithDelimiter(r.Pair.Base, r.Pair.Quote, r.Pair.Delimiter)
|
||||
|
||||
err = checkParams(r.Exchange, exch, a, p)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -3333,11 +3247,6 @@ func (s *RPCServer) FindMissingSavedCandleIntervals(_ context.Context, r *gctrpc
|
||||
if r.End == "" || r.Start == "" || r.ExchangeName == "" || r.Pair == nil || r.AssetType == "" || r.Pair.String() == "" || r.Interval <= 0 {
|
||||
return nil, errInvalidArguments
|
||||
}
|
||||
p := currency.Pair{
|
||||
Delimiter: r.Pair.Delimiter,
|
||||
Base: currency.NewCode(r.Pair.Base),
|
||||
Quote: currency.NewCode(r.Pair.Quote),
|
||||
}
|
||||
|
||||
a, err := asset.New(r.AssetType)
|
||||
if err != nil {
|
||||
@@ -3349,6 +3258,8 @@ func (s *RPCServer) FindMissingSavedCandleIntervals(_ context.Context, r *gctrpc
|
||||
return nil, err
|
||||
}
|
||||
|
||||
p := currency.NewPairWithDelimiter(r.Pair.Base, r.Pair.Quote, r.Pair.Delimiter)
|
||||
|
||||
err = checkParams(r.ExchangeName, exch, a, p)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -3425,11 +3336,6 @@ func (s *RPCServer) FindMissingSavedTradeIntervals(_ context.Context, r *gctrpc.
|
||||
if r.End == "" || r.Start == "" || r.ExchangeName == "" || r.Pair == nil || r.AssetType == "" || r.Pair.String() == "" {
|
||||
return nil, errInvalidArguments
|
||||
}
|
||||
p := currency.Pair{
|
||||
Delimiter: r.Pair.Delimiter,
|
||||
Base: currency.NewCode(r.Pair.Base),
|
||||
Quote: currency.NewCode(r.Pair.Quote),
|
||||
}
|
||||
|
||||
a, err := asset.New(r.AssetType)
|
||||
if err != nil {
|
||||
@@ -3441,6 +3347,8 @@ func (s *RPCServer) FindMissingSavedTradeIntervals(_ context.Context, r *gctrpc.
|
||||
return nil, err
|
||||
}
|
||||
|
||||
p := currency.NewPairWithDelimiter(r.Pair.Base, r.Pair.Quote, r.Pair.Delimiter)
|
||||
|
||||
err = checkParams(r.ExchangeName, exch, a, p)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -3542,11 +3450,6 @@ func (s *RPCServer) GetHistoricTrades(r *gctrpc.GetSavedTradesRequest, stream gc
|
||||
if r.Exchange == "" || r.Pair == nil || r.AssetType == "" || r.Pair.String() == "" {
|
||||
return errInvalidArguments
|
||||
}
|
||||
cp := currency.Pair{
|
||||
Delimiter: r.Pair.Delimiter,
|
||||
Base: currency.NewCode(r.Pair.Base),
|
||||
Quote: currency.NewCode(r.Pair.Quote),
|
||||
}
|
||||
|
||||
a, err := asset.New(r.AssetType)
|
||||
if err != nil {
|
||||
@@ -3558,6 +3461,8 @@ func (s *RPCServer) GetHistoricTrades(r *gctrpc.GetSavedTradesRequest, stream gc
|
||||
return err
|
||||
}
|
||||
|
||||
cp := currency.NewPairWithDelimiter(r.Pair.Base, r.Pair.Quote, r.Pair.Delimiter)
|
||||
|
||||
err = checkParams(r.Exchange, exch, a, cp)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -3622,11 +3527,6 @@ func (s *RPCServer) GetRecentTrades(ctx context.Context, r *gctrpc.GetSavedTrade
|
||||
if r.Exchange == "" || r.Pair == nil || r.AssetType == "" || r.Pair.String() == "" {
|
||||
return nil, errInvalidArguments
|
||||
}
|
||||
cp := currency.Pair{
|
||||
Delimiter: r.Pair.Delimiter,
|
||||
Base: currency.NewCode(r.Pair.Base),
|
||||
Quote: currency.NewCode(r.Pair.Quote),
|
||||
}
|
||||
|
||||
a, err := asset.New(r.AssetType)
|
||||
if err != nil {
|
||||
@@ -3638,6 +3538,8 @@ func (s *RPCServer) GetRecentTrades(ctx context.Context, r *gctrpc.GetSavedTrade
|
||||
return nil, err
|
||||
}
|
||||
|
||||
cp := currency.NewPairWithDelimiter(r.Pair.Base, r.Pair.Quote, r.Pair.Delimiter)
|
||||
|
||||
err = checkParams(r.Exchange, exch, a, cp)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -3855,17 +3757,13 @@ func (s *RPCServer) UpsertDataHistoryJob(_ context.Context, r *gctrpc.UpsertData
|
||||
return nil, err
|
||||
}
|
||||
|
||||
p := currency.Pair{
|
||||
Delimiter: r.Pair.Delimiter,
|
||||
Base: currency.NewCode(r.Pair.Base),
|
||||
Quote: currency.NewCode(r.Pair.Quote),
|
||||
}
|
||||
|
||||
e, err := s.GetExchangeByName(r.Exchange)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
p := currency.NewPairWithDelimiter(r.Pair.Base, r.Pair.Quote, r.Pair.Delimiter)
|
||||
|
||||
err = checkParams(r.Exchange, e, a, p)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -4886,7 +4784,7 @@ func (s *RPCServer) GetCollateral(ctx context.Context, r *gctrpc.GetCollateralRe
|
||||
if !a.IsFutures() {
|
||||
return nil, fmt.Errorf("%s %w", a, futures.ErrNotFuturesAsset)
|
||||
}
|
||||
ai, err := exch.FetchAccountInfo(ctx, a)
|
||||
ai, err := exch.GetCachedAccountInfo(ctx, a)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -4942,9 +4840,9 @@ func (s *RPCServer) GetCollateral(ctx context.Context, r *gctrpc.GetCollateralRe
|
||||
// cannot price currency to calculate collateral
|
||||
continue
|
||||
}
|
||||
tick, err = exch.FetchTicker(ctx, tickerCurr, asset.Spot)
|
||||
tick, err = exch.GetCachedTicker(tickerCurr, asset.Spot)
|
||||
if err != nil {
|
||||
log.Errorf(log.GRPCSys, "GetCollateral offline calculation error via FetchTicker %s %s", exch.GetName(), err)
|
||||
log.Errorf(log.GRPCSys, "GetCollateral offline calculation error via GetCachedTicker %s %s", exch.GetName(), err)
|
||||
continue
|
||||
}
|
||||
if tick.Last == 0 {
|
||||
|
||||
Reference in New Issue
Block a user