exchanges: Update GateIO exchange to V4 (#1058)

* Adding Public Endpoints and test functions

* Adding public endpoints and test functions

* Adding private spot endpoints

* Adding private endpoints and corresponding tests for margin

* Adding Margin Private endpoints

* Adding cross margin and flash swap endpoints

* Adding futures private endpoints

* Adding futures private endpoints and corresponding tests

* Adding Options and SubAccount endpoints and their unit tests

* Adding Wrapper functions

* Complete wrapper functions and corresponding unit test functions

* Fixing wrapper issues and adding websocket functions

* Update of Spot websocket and adding futures websocket handlers

* completed futures WS push data endpoints

* Completed Options websocket endpoints

* Adding websocket support for delivery futures and slight update on endpoint funcs

* Added Delivery websocket support and fix linter issues

* Update on Unit tests

* fix slight currency format error

* Fix slight endpoint tempos

* Update on conditional statements and unit tests issues

* fixing slight tempos

* Slight model and websocket data push method change

* Fix unit test tempos and updating models

* Fix on code structures and update on unit tests

* Slight code fix

* Remove print statements

* Update on tradable pairs fetch eps

* Fix websocket tempos

* Adding types to websocket routine manager

* Fix slight issues

* Slight fixes

* Updating wrapper funcs and models

* Slight update

* Update on test

* Update on tradable pairs

* update conditional statements

* Fixing slight issues

* Updating unit tests

* Minor fixes depending review comments

* Remove redundant method declaration

* Adding missing intervals

* Updating fetch tradable pairs

* update tradable pairs issues

* Addressing small tempos

* Slight fix on ticker

* Minor Fixes

* Minor review comment fixes

* Unit test and minor code updates

* Slight code updates

* Minor updates depending review comments

* Fixes

* Updating incoming message matcher

* Fix missing merge issue

* Fix minor wrapper issues

* Updating ratelimit and other issues

* Updating endpoint models and adding missing eps

* Update on code structure and models

* Minor codespell fixes

* Minor update on models

* fix unit test panic

* Minor race fix

* Fix issues in generating signature and unit tests

* Minor update on wrapper and unit tests

* Minor fix on wrapper

* Mini linter issues fix

* Minor fix

* endpoint fixes and slight update

* Minor fixes

* Updating exchange functions and unit tests

* Unit test and wrapper updates

* Remove options candlestick support

* Minor unit test and wrapper fix

* Unit test update

* minor fix on unit test and wrapper

* endpoints constants name change

* Add minor wrapper issues

* endpoint constants update

* endpoint url updates

* Updating subscriptions

* fixing dual mode endpoint methods

* minor fix

* rm small tempo

* Update on websocket orderbook handling

* Orderbook and currency pair update

* fix linter and test issues

* minor helper function update

* Fix wrapper coverage and wrapper issues

* delete unused variables

* Minor fix on ReadData() call

* separating websocket handlers

* separating websocket handlers

* Minor fix on enabled pair

* minor fix

* check instrument availability in spot

* create a separate subscriber for sake of multiple websocket connection

* linter fix

* minor websocket and gateio endpoints fix

* fix nil pointer exception

* minor fixes

* spelling fix decerializes -> deserializes

* fix Bitfinex unit test issues

* minor unknown currency pair labling fix

* minor currency pair handling fix

* slight update on GetDepositAddress wrapper unit test

* setting max request job to 200

* fixing numerical and timestamp type convert

* fix value overflow error

* change method of parsing orderbook price

* unifying timestamp conversion types to gateioTime

---------

Co-authored-by: Samuael Adnew <samuaelad@Samuaels-MacBook-Air.local>
This commit is contained in:
Samuael A
2023-05-30 04:03:53 +00:00
committed by GitHub
parent d6bff305c7
commit 3eac6d12bd
25 changed files with 14353 additions and 2871 deletions

View File

@@ -234,6 +234,24 @@ func (m *WebsocketRoutineManager) websocketDataHandler(exchName string, data int
return err
}
m.syncer.PrintTickerSummary(d, "websocket", err)
case []ticker.Price:
for x := range d {
if m.syncer.IsRunning() {
err := m.syncer.Update(exchName,
d[x].Pair,
d[x].AssetType,
SyncItemTicker,
nil)
if err != nil {
return err
}
}
err := ticker.ProcessTicker(&d[x])
if err != nil {
return err
}
m.syncer.PrintTickerSummary(&d[x], "websocket", err)
}
case stream.KlineData:
if m.verbose {
log.Infof(log.WebsocketMgr, "%s websocket %s %s kline updated %+v",
@@ -242,6 +260,16 @@ func (m *WebsocketRoutineManager) websocketDataHandler(exchName string, data int
d.AssetType,
d)
}
case []stream.KlineData:
for x := range d {
if m.verbose {
log.Infof(log.WebsocketMgr, "%s websocket %s %s kline updated %+v",
exchName,
m.FormatCurrency(d[x].Pair),
d[x].AssetType,
d)
}
}
case *orderbook.Depth:
base, err := d.Retrieve()
if err != nil {
@@ -281,6 +309,30 @@ func (m *WebsocketRoutineManager) websocketDataHandler(exchName string, data int
}
m.printOrderSummary(d, true)
}
case []order.Detail:
for x := range d {
if !m.orderManager.Exists(&d[x]) {
err := m.orderManager.Add(&d[x])
if err != nil {
return err
}
m.printOrderSummary(&d[x], false)
} else {
od, err := m.orderManager.GetByExchangeAndID(d[x].Exchange, d[x].OrderID)
if err != nil {
return err
}
err = od.UpdateOrderFromDetail(&d[x])
if err != nil {
return err
}
err = m.orderManager.UpdateExistingOrder(od)
if err != nil {
return err
}
m.printOrderSummary(&d[x], true)
}
}
case order.ClassificationError:
return fmt.Errorf("%w %s", d.Err, d.Error())
case stream.UnhandledMessageWarning:
@@ -289,6 +341,12 @@ func (m *WebsocketRoutineManager) websocketDataHandler(exchName string, data int
if m.verbose {
m.printAccountHoldingsChangeSummary(d)
}
case []account.Change:
if m.verbose {
for x := range d {
m.printAccountHoldingsChangeSummary(d[x])
}
}
case []trade.Data:
if m.verbose {
log.Infof(log.Trade, "%+v", d)