mirror of
https://github.com/d0zingcat/gocryptotrader.git
synced 2026-05-29 23:16:51 +00:00
exchanges/engine: Add multichain deposit/withdrawal support (#794)
* Add exchange multichain support * Start tidying up * Add multichain transfer support for Bitfinex and fix poloniex bug * Add Coinbene multichain support * Start adjusting the deposit address manager * Fix deposit tests and further enhancements * Cleanup * Add bypass flag, expand tests plus error coverage for Huobi Adjust helpers * Address nitterinos * BFX wd changes * Address nitterinos * Minor fixes rebasing on master * Fix BFX acceptableMethods test * Add some TO-DOs for 2 tests WRT races * Fix acceptableMethods test round 2 * Address nitterinos
This commit is contained in:
@@ -21,25 +21,27 @@ const (
|
||||
exmoAPIURL = "https://api.exmo.com"
|
||||
exmoAPIVersion = "1"
|
||||
|
||||
exmoTrades = "trades"
|
||||
exmoOrderbook = "order_book"
|
||||
exmoTicker = "ticker"
|
||||
exmoPairSettings = "pair_settings"
|
||||
exmoCurrency = "currency"
|
||||
exmoUserInfo = "user_info"
|
||||
exmoOrderCreate = "order_create"
|
||||
exmoOrderCancel = "order_cancel"
|
||||
exmoOpenOrders = "user_open_orders"
|
||||
exmoUserTrades = "user_trades"
|
||||
exmoCancelledOrders = "user_cancelled_orders"
|
||||
exmoOrderTrades = "order_trades"
|
||||
exmoRequiredAmount = "required_amount"
|
||||
exmoDepositAddress = "deposit_address"
|
||||
exmoWithdrawCrypt = "withdraw_crypt"
|
||||
exmoGetWithdrawTXID = "withdraw_get_txid"
|
||||
exmoExcodeCreate = "excode_create"
|
||||
exmoExcodeLoad = "excode_load"
|
||||
exmoWalletHistory = "wallet_history"
|
||||
exmoTrades = "trades"
|
||||
exmoOrderbook = "order_book"
|
||||
exmoTicker = "ticker"
|
||||
exmoPairSettings = "pair_settings"
|
||||
exmoCurrency = "currency"
|
||||
|
||||
exmoUserInfo = "user_info"
|
||||
exmoOrderCreate = "order_create"
|
||||
exmoOrderCancel = "order_cancel"
|
||||
exmoOpenOrders = "user_open_orders"
|
||||
exmoUserTrades = "user_trades"
|
||||
exmoCancelledOrders = "user_cancelled_orders"
|
||||
exmoOrderTrades = "order_trades"
|
||||
exmoRequiredAmount = "required_amount"
|
||||
exmoDepositAddress = "deposit_address"
|
||||
exmoWithdrawCrypt = "withdraw_crypt"
|
||||
exmoGetWithdrawTXID = "withdraw_get_txid"
|
||||
exmoExcodeCreate = "excode_create"
|
||||
exmoExcodeLoad = "excode_load"
|
||||
exmoWalletHistory = "wallet_history"
|
||||
exmoCryptoPaymentProviderList = "payments/providers/crypto/list"
|
||||
|
||||
// Rate limit: 180 per/minute
|
||||
exmoRateInterval = time.Minute
|
||||
@@ -220,7 +222,6 @@ func (e *EXMO) GetCryptoDepositAddress(ctx context.Context) (map[string]string,
|
||||
mapString[key] = v
|
||||
}
|
||||
return mapString, nil
|
||||
|
||||
default:
|
||||
return nil, errors.New("no addresses found, generate required addresses via site")
|
||||
}
|
||||
@@ -228,7 +229,7 @@ func (e *EXMO) GetCryptoDepositAddress(ctx context.Context) (map[string]string,
|
||||
|
||||
// WithdrawCryptocurrency withdraws a cryptocurrency from the exchange to the desired address
|
||||
// NOTE: This API function is available only after request to their tech support team
|
||||
func (e *EXMO) WithdrawCryptocurrency(ctx context.Context, currency, address, invoice string, amount float64) (int64, error) {
|
||||
func (e *EXMO) WithdrawCryptocurrency(ctx context.Context, currency, address, invoice, transport string, amount float64) (int64, error) {
|
||||
type response struct {
|
||||
TaskID int64 `json:"task_id,string"`
|
||||
Result bool `json:"result"`
|
||||
@@ -240,8 +241,12 @@ func (e *EXMO) WithdrawCryptocurrency(ctx context.Context, currency, address, in
|
||||
v.Set("currency", currency)
|
||||
v.Set("address", address)
|
||||
|
||||
if strings.EqualFold(currency, "XRP") {
|
||||
v.Set(invoice, invoice)
|
||||
if invoice != "" {
|
||||
v.Set("invoice", invoice)
|
||||
}
|
||||
|
||||
if transport != "" {
|
||||
v.Set("transport", strings.ToUpper(transport))
|
||||
}
|
||||
|
||||
v.Set("amount", strconv.FormatFloat(amount, 'f', -1, 64))
|
||||
@@ -526,3 +531,10 @@ func getInternationalBankDepositFee(c currency.Code, amount float64, bankTransac
|
||||
|
||||
return fee
|
||||
}
|
||||
|
||||
// GetCryptoPaymentProvidersList returns a map of all the supported cryptocurrency transfer settings
|
||||
func (e *EXMO) GetCryptoPaymentProvidersList(ctx context.Context) (map[string][]CryptoPaymentProvider, error) {
|
||||
var result map[string][]CryptoPaymentProvider
|
||||
path := "/v" + exmoAPIVersion + "/" + exmoCryptoPaymentProviderList
|
||||
return result, e.SendHTTPRequest(ctx, exchange.RestSpot, path, &result)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user