package ccxt // PLEASE DO NOT EDIT THIS FILE, IT IS GENERATED AND WILL BE OVERWRITTEN: // https://github.com/ccxt/ccxt/blob/master/CONTRIBUTING.md#how-to-contribute-code type coinspot struct { Exchange } func NewCoinspotCore() coinspot { p := coinspot{} setDefaults(&p) return p } func (this *coinspot) Describe() interface{} { return this.DeepExtend(this.Exchange.Describe(), map[string]interface{} { "id": "coinspot", "name": "CoinSpot", "countries": []interface{}{"AU"}, "rateLimit": 1000, "pro": false, "has": map[string]interface{} { "CORS": nil, "spot": true, "margin": false, "swap": false, "future": false, "option": false, "addMargin": false, "cancelOrder": true, "closeAllPositions": false, "closePosition": false, "createMarketOrder": false, "createOrder": true, "createReduceOnlyOrder": false, "createStopLimitOrder": false, "createStopMarketOrder": false, "createStopOrder": false, "fetchBalance": true, "fetchBorrowRateHistories": false, "fetchBorrowRateHistory": false, "fetchCrossBorrowRate": false, "fetchCrossBorrowRates": false, "fetchFundingHistory": false, "fetchFundingRate": false, "fetchFundingRateHistory": false, "fetchFundingRates": false, "fetchIndexOHLCV": false, "fetchIsolatedBorrowRate": false, "fetchIsolatedBorrowRates": false, "fetchLeverage": false, "fetchLeverageTiers": false, "fetchMarginMode": false, "fetchMarkOHLCV": false, "fetchMyTrades": true, "fetchOpenInterestHistory": false, "fetchOrderBook": true, "fetchPosition": false, "fetchPositionHistory": false, "fetchPositionMode": false, "fetchPositions": false, "fetchPositionsForSymbol": false, "fetchPositionsHistory": false, "fetchPositionsRisk": false, "fetchPremiumIndexOHLCV": false, "fetchTicker": true, "fetchTickers": true, "fetchTrades": true, "fetchTradingFee": false, "fetchTradingFees": false, "reduceMargin": false, "setLeverage": false, "setMarginMode": false, "setPositionMode": false, "ws": false, }, "urls": map[string]interface{} { "logo": "https://user-images.githubusercontent.com/1294454/28208429-3cacdf9a-6896-11e7-854e-4c79a772a30f.jpg", "api": map[string]interface{} { "public": "https://www.coinspot.com.au/pubapi", "private": "https://www.coinspot.com.au/api", }, "www": "https://www.coinspot.com.au", "doc": "https://www.coinspot.com.au/api", "referral": "https://www.coinspot.com.au/register?code=PJURCU", }, "api": map[string]interface{} { "public": map[string]interface{} { "get": []interface{}{"latest"}, }, "private": map[string]interface{} { "post": []interface{}{"orders", "orders/history", "my/coin/deposit", "my/coin/send", "quote/buy", "quote/sell", "my/balances", "my/orders", "my/buy", "my/sell", "my/buy/cancel", "my/sell/cancel", "ro/my/balances", "ro/my/balances/{cointype}", "ro/my/deposits", "ro/my/withdrawals", "ro/my/transactions", "ro/my/transactions/{cointype}", "ro/my/transactions/open", "ro/my/transactions/{cointype}/open", "ro/my/sendreceive", "ro/my/affiliatepayments", "ro/my/referralpayments"}, }, }, "markets": map[string]interface{} { "ADA/AUD": this.SafeMarketStructure(map[string]interface{} { "id": "ada", "symbol": "ADA/AUD", "base": "ADA", "quote": "AUD", "baseId": "ada", "quoteId": "aud", "type": "spot", "spot": true, }), "BTC/AUD": this.SafeMarketStructure(map[string]interface{} { "id": "btc", "symbol": "BTC/AUD", "base": "BTC", "quote": "AUD", "baseId": "btc", "quoteId": "aud", "type": "spot", "spot": true, }), "ETH/AUD": this.SafeMarketStructure(map[string]interface{} { "id": "eth", "symbol": "ETH/AUD", "base": "ETH", "quote": "AUD", "baseId": "eth", "quoteId": "aud", "type": "spot", "spot": true, }), "XRP/AUD": this.SafeMarketStructure(map[string]interface{} { "id": "xrp", "symbol": "XRP/AUD", "base": "XRP", "quote": "AUD", "baseId": "xrp", "quoteId": "aud", "type": "spot", "spot": true, }), "LTC/AUD": this.SafeMarketStructure(map[string]interface{} { "id": "ltc", "symbol": "LTC/AUD", "base": "LTC", "quote": "AUD", "baseId": "ltc", "quoteId": "aud", "type": "spot", "spot": true, }), "DOGE/AUD": this.SafeMarketStructure(map[string]interface{} { "id": "doge", "symbol": "DOGE/AUD", "base": "DOGE", "quote": "AUD", "baseId": "doge", "quoteId": "aud", "type": "spot", "spot": true, }), "RFOX/AUD": this.SafeMarketStructure(map[string]interface{} { "id": "rfox", "symbol": "RFOX/AUD", "base": "RFOX", "quote": "AUD", "baseId": "rfox", "quoteId": "aud", "type": "spot", "spot": true, }), "POWR/AUD": this.SafeMarketStructure(map[string]interface{} { "id": "powr", "symbol": "POWR/AUD", "base": "POWR", "quote": "AUD", "baseId": "powr", "quoteId": "aud", "type": "spot", "spot": true, }), "NEO/AUD": this.SafeMarketStructure(map[string]interface{} { "id": "neo", "symbol": "NEO/AUD", "base": "NEO", "quote": "AUD", "baseId": "neo", "quoteId": "aud", "type": "spot", "spot": true, }), "TRX/AUD": this.SafeMarketStructure(map[string]interface{} { "id": "trx", "symbol": "TRX/AUD", "base": "TRX", "quote": "AUD", "baseId": "trx", "quoteId": "aud", "type": "spot", "spot": true, }), "EOS/AUD": this.SafeMarketStructure(map[string]interface{} { "id": "eos", "symbol": "EOS/AUD", "base": "EOS", "quote": "AUD", "baseId": "eos", "quoteId": "aud", "type": "spot", "spot": true, }), "XLM/AUD": this.SafeMarketStructure(map[string]interface{} { "id": "xlm", "symbol": "XLM/AUD", "base": "XLM", "quote": "AUD", "baseId": "xlm", "quoteId": "aud", "type": "spot", "spot": true, }), "RHOC/AUD": this.SafeMarketStructure(map[string]interface{} { "id": "rhoc", "symbol": "RHOC/AUD", "base": "RHOC", "quote": "AUD", "baseId": "rhoc", "quoteId": "aud", "type": "spot", "spot": true, }), "GAS/AUD": this.SafeMarketStructure(map[string]interface{} { "id": "gas", "symbol": "GAS/AUD", "base": "GAS", "quote": "AUD", "baseId": "gas", "quoteId": "aud", "type": "spot", "spot": true, }), }, "commonCurrencies": map[string]interface{} { "DRK": "DASH", }, "options": map[string]interface{} { "fetchBalance": "private_post_my_balances", }, "features": map[string]interface{} { "spot": map[string]interface{} { "sandbox": false, "createOrder": map[string]interface{} { "marginMode": false, "triggerPrice": false, "triggerPriceType": nil, "triggerDirection": false, "stopLossPrice": false, "takeProfitPrice": false, "attachedStopLossTakeProfit": nil, "timeInForce": map[string]interface{} { "IOC": false, "FOK": false, "PO": false, "GTD": false, }, "hedged": false, "trailing": false, "leverage": false, "marketBuyByCost": false, "marketBuyRequiresPrice": false, "selfTradePrevention": false, "iceberg": false, }, "createOrders": nil, "fetchMyTrades": map[string]interface{} { "marginMode": false, "limit": nil, "daysBack": 100000, "untilDays": 100000, "symbolRequired": false, }, "fetchOrder": nil, "fetchOpenOrders": nil, "fetchOrders": nil, "fetchClosedOrders": nil, "fetchOHLCV": nil, }, "swap": map[string]interface{} { "linear": nil, "inverse": nil, }, "future": map[string]interface{} { "linear": nil, "inverse": nil, }, }, "precisionMode": TICK_SIZE, }) } func (this *coinspot) ParseBalance(response interface{}) interface{} { var result interface{} = map[string]interface{} { "info": response, } var balances interface{} = this.SafeValue2(response, "balance", "balances") if IsTrue(IsArray(balances)) { for i := 0; IsLessThan(i, GetArrayLength(balances)); i++ { var currencies interface{} = GetValue(balances, i) var currencyIds interface{} = ObjectKeys(currencies) for j := 0; IsLessThan(j, GetArrayLength(currencyIds)); j++ { var currencyId interface{} = GetValue(currencyIds, j) var balance interface{} = GetValue(currencies, currencyId) var code interface{} = this.SafeCurrencyCode(currencyId) var account interface{} = this.Account() AddElementToObject(account, "total", this.SafeString(balance, "balance")) AddElementToObject(result, code, account) } } } else { var currencyIds interface{} = ObjectKeys(balances) for i := 0; IsLessThan(i, GetArrayLength(currencyIds)); i++ { var currencyId interface{} = GetValue(currencyIds, i) var code interface{} = this.SafeCurrencyCode(currencyId) var account interface{} = this.Account() AddElementToObject(account, "total", this.SafeString(balances, currencyId)) AddElementToObject(result, code, account) } } return this.SafeBalance(result) } /** * @method * @name coinspot#fetchBalance * @description query for balance and get the amount of funds available for trading or funds locked in orders * @see https://www.coinspot.com.au/api#listmybalance * @param {object} [params] extra parameters specific to the exchange API endpoint * @returns {object} a [balance structure]{@link https://docs.ccxt.com/#/?id=balance-structure} */ func (this *coinspot) FetchBalance(optionalArgs ...interface{}) <- chan interface{} { ch := make(chan interface{}) go func() interface{} { defer close(ch) defer ReturnPanicError(ch) params := GetArg(optionalArgs, 0, map[string]interface{} {}) _ = params retRes2358 := (<-this.LoadMarkets()) PanicOnError(retRes2358) var method interface{} = this.SafeString(this.Options, "fetchBalance", "private_post_my_balances") response:= (<-this.callDynamically(method, params)) PanicOnError(response) // // read-write api keys // // ... // // read-only api keys // // { // "status":"ok", // "balances":[ // { // "LTC":{"balance":0.1,"audbalance":16.59,"rate":165.95} // } // ] // } // ch <- this.ParseBalance(response) return nil }() return ch } /** * @method * @name coinspot#fetchOrderBook * @description fetches information on open orders with bid (buy) and ask (sell) prices, volumes and other data * @see https://www.coinspot.com.au/api#listopenorders * @param {string} symbol unified symbol of the market to fetch the order book for * @param {int} [limit] the maximum amount of order book entries to return * @param {object} [params] extra parameters specific to the exchange API endpoint * @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/#/?id=order-book-structure} indexed by market symbols */ func (this *coinspot) FetchOrderBook(symbol interface{}, optionalArgs ...interface{}) <- chan interface{} { ch := make(chan interface{}) go func() interface{} { defer close(ch) defer ReturnPanicError(ch) limit := GetArg(optionalArgs, 0, nil) _ = limit params := GetArg(optionalArgs, 1, map[string]interface{} {}) _ = params retRes2688 := (<-this.LoadMarkets()) PanicOnError(retRes2688) var market interface{} = this.Market(symbol) var request interface{} = map[string]interface{} { "cointype": GetValue(market, "id"), } orderbook:= (<-this.PrivatePostOrders(this.Extend(request, params))) PanicOnError(orderbook) ch <- this.ParseOrderBook(orderbook, GetValue(market, "symbol"), nil, "buyorders", "sellorders", "rate", "amount") return nil }() return ch } func (this *coinspot) ParseTicker(ticker interface{}, optionalArgs ...interface{}) interface{} { // // { // "btc":{ // "bid":"51970", // "ask":"53000", // "last":"52806.47" // } // } // market := GetArg(optionalArgs, 0, nil) _ = market var symbol interface{} = this.SafeSymbol(nil, market) var last interface{} = this.SafeString(ticker, "last") return this.SafeTicker(map[string]interface{} { "symbol": symbol, "timestamp": nil, "datetime": nil, "high": nil, "low": nil, "bid": this.SafeString(ticker, "bid"), "bidVolume": nil, "ask": this.SafeString(ticker, "ask"), "askVolume": nil, "vwap": nil, "open": nil, "close": last, "last": last, "previousClose": nil, "change": nil, "percentage": nil, "average": nil, "baseVolume": nil, "quoteVolume": nil, "info": ticker, }, market) } /** * @method * @name coinspot#fetchTicker * @description fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market * @see https://www.coinspot.com.au/api#latestprices * @param {string} symbol unified symbol of the market to fetch the ticker for * @param {object} [params] extra parameters specific to the exchange API endpoint * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure} */ func (this *coinspot) FetchTicker(symbol interface{}, optionalArgs ...interface{}) <- chan interface{} { ch := make(chan interface{}) go func() interface{} { defer close(ch) defer ReturnPanicError(ch) params := GetArg(optionalArgs, 0, map[string]interface{} {}) _ = params retRes3238 := (<-this.LoadMarkets()) PanicOnError(retRes3238) var market interface{} = this.Market(symbol) response:= (<-this.PublicGetLatest(params)) PanicOnError(response) var id interface{} = GetValue(market, "id") id = ToLower(id) var prices interface{} = this.SafeDict(response, "prices", map[string]interface{} {}) // // { // "status":"ok", // "prices":{ // "btc":{ // "bid":"52732.47000022", // "ask":"53268.0699976", // "last":"53284.03" // } // } // } // var ticker interface{} = this.SafeDict(prices, id) ch <- this.ParseTicker(ticker, market) return nil }() return ch } /** * @method * @name coinspot#fetchTickers * @description fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market * @see https://www.coinspot.com.au/api#latestprices * @param {string[]|undefined} symbols unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned * @param {object} [params] extra parameters specific to the exchange API endpoint * @returns {object} a dictionary of [ticker structures]{@link https://docs.ccxt.com/#/?id=ticker-structure} */ func (this *coinspot) FetchTickers(optionalArgs ...interface{}) <- chan interface{} { ch := make(chan interface{}) go func() interface{} { defer close(ch) defer ReturnPanicError(ch) symbols := GetArg(optionalArgs, 0, nil) _ = symbols params := GetArg(optionalArgs, 1, map[string]interface{} {}) _ = params retRes3558 := (<-this.LoadMarkets()) PanicOnError(retRes3558) response:= (<-this.PublicGetLatest(params)) PanicOnError(response) // // { // "status": "ok", // "prices": { // "btc": { // "bid": "25050", // "ask": "25370", // "last": "25234" // }, // "ltc": { // "bid": "79.39192993", // "ask": "87.98", // "last": "87.95" // } // } // } // var result interface{} = map[string]interface{} {} var prices interface{} = this.SafeDict(response, "prices", map[string]interface{} {}) var ids interface{} = ObjectKeys(prices) for i := 0; IsLessThan(i, GetArrayLength(ids)); i++ { var id interface{} = GetValue(ids, i) var market interface{} = this.SafeMarket(id) if IsTrue(GetValue(market, "spot")) { var symbol interface{} = GetValue(market, "symbol") var ticker interface{} = GetValue(prices, id) AddElementToObject(result, symbol, this.ParseTicker(ticker, market)) } } ch <- this.FilterByArrayTickers(result, "symbol", symbols) return nil }() return ch } /** * @method * @name coinspot#fetchTrades * @description get the list of most recent trades for a particular symbol * @see https://www.coinspot.com.au/api#orderhistory * @param {string} symbol unified symbol of the market to fetch trades for * @param {int} [since] timestamp in ms of the earliest trade to fetch * @param {int} [limit] the maximum amount of trades to fetch * @param {object} [params] extra parameters specific to the exchange API endpoint * @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=public-trades} */ func (this *coinspot) FetchTrades(symbol interface{}, optionalArgs ...interface{}) <- chan interface{} { ch := make(chan interface{}) go func() interface{} { defer close(ch) defer ReturnPanicError(ch) since := GetArg(optionalArgs, 0, nil) _ = since limit := GetArg(optionalArgs, 1, nil) _ = limit params := GetArg(optionalArgs, 2, map[string]interface{} {}) _ = params retRes4018 := (<-this.LoadMarkets()) PanicOnError(retRes4018) var market interface{} = this.Market(symbol) var request interface{} = map[string]interface{} { "cointype": GetValue(market, "id"), } response:= (<-this.PrivatePostOrdersHistory(this.Extend(request, params))) PanicOnError(response) // // { // "status":"ok", // "orders":[ // {"amount":0.00102091,"rate":21549.09999991,"total":21.99969168,"coin":"BTC","solddate":1604890646143,"market":"BTC/AUD"}, // ], // } // var trades interface{} = this.SafeList(response, "orders", []interface{}{}) ch <- this.ParseTrades(trades, market, since, limit) return nil }() return ch } /** * @method * @name coinspot#fetchMyTrades * @description fetch all trades made by the user * @see https://www.coinspot.com.au/api#rotransaction * @param {string} symbol unified market symbol * @param {int} [since] the earliest time in ms to fetch trades for * @param {int} [limit] the maximum number of trades structures to retrieve * @param {object} [params] extra parameters specific to the exchange API endpoint * @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=trade-structure} */ func (this *coinspot) FetchMyTrades(optionalArgs ...interface{}) <- chan interface{} { ch := make(chan interface{}) go func() interface{} { defer close(ch) defer ReturnPanicError(ch) symbol := GetArg(optionalArgs, 0, nil) _ = symbol since := GetArg(optionalArgs, 1, nil) _ = since limit := GetArg(optionalArgs, 2, nil) _ = limit params := GetArg(optionalArgs, 3, map[string]interface{} {}) _ = params retRes4318 := (<-this.LoadMarkets()) PanicOnError(retRes4318) var request interface{} = map[string]interface{} {} var market interface{} = nil if IsTrue(!IsEqual(symbol, nil)) { market = this.Market(symbol) } if IsTrue(!IsEqual(since, nil)) { AddElementToObject(request, "startdate", this.Yyyymmdd(since)) } response:= (<-this.PrivatePostRoMyTransactions(this.Extend(request, params))) PanicOnError(response) // { // "status": "ok", // "buyorders": [ // { // "otc": false, // "market": "ALGO/AUD", // "amount": 386.95197925, // "created": "2022-10-20T09:56:44.502Z", // "audfeeExGst": 1.80018002, // "audGst": 0.180018, // "audtotal": 200 // }, // ], // "sellorders": [ // { // "otc": false, // "market": "SOLO/ALGO", // "amount": 154.52345614, // "total": 115.78858204658796, // "created": "2022-04-16T09:36:43.698Z", // "audfeeExGst": 1.08995731, // "audGst": 0.10899573, // "audtotal": 118.7 // }, // ] // } var buyTrades interface{} = this.SafeList(response, "buyorders", []interface{}{}) for i := 0; IsLessThan(i, GetArrayLength(buyTrades)); i++ { AddElementToObject(GetValue(buyTrades, i), "side", "buy") } var sellTrades interface{} = this.SafeList(response, "sellorders", []interface{}{}) for i := 0; IsLessThan(i, GetArrayLength(sellTrades)); i++ { AddElementToObject(GetValue(sellTrades, i), "side", "sell") } var trades interface{} = this.ArrayConcat(buyTrades, sellTrades) ch <- this.ParseTrades(trades, market, since, limit) return nil }() return ch } func (this *coinspot) ParseTrade(trade interface{}, optionalArgs ...interface{}) interface{} { // // public fetchTrades // // { // "amount":0.00102091, // "rate":21549.09999991, // "total":21.99969168, // "coin":"BTC", // "solddate":1604890646143, // "market":"BTC/AUD" // } // // private fetchMyTrades // { // "otc": false, // "market": "ALGO/AUD", // "amount": 386.95197925, // "created": "2022-10-20T09:56:44.502Z", // "audfeeExGst": 1.80018002, // "audGst": 0.180018, // "audtotal": 200, // "total": 200, // "side": "buy", // "price": 0.5168600000125209 // } market := GetArg(optionalArgs, 0, nil) _ = market var timestamp interface{} = nil var priceString interface{} = nil var fee interface{} = nil var audTotal interface{} = this.SafeString(trade, "audtotal") var costString interface{} = this.SafeString(trade, "total", audTotal) var side interface{} = this.SafeString(trade, "side") var amountString interface{} = this.SafeString(trade, "amount") var marketId interface{} = this.SafeString(trade, "market") var symbol interface{} = this.SafeSymbol(marketId, market, "/") var solddate interface{} = this.SafeInteger(trade, "solddate") if IsTrue(!IsEqual(solddate, nil)) { priceString = this.SafeString(trade, "rate") timestamp = solddate } else { priceString = Precise.StringDiv(costString, amountString) var createdString interface{} = this.SafeString(trade, "created") timestamp = this.Parse8601(createdString) var audfeeExGst interface{} = this.SafeString(trade, "audfeeExGst") var audGst interface{} = this.SafeString(trade, "audGst") // The transaction fee which consumers pay is inclusive of GST by default var feeCost interface{} = Precise.StringAdd(audfeeExGst, audGst) var feeCurrencyId interface{} = "AUD" fee = map[string]interface{} { "cost": this.ParseNumber(feeCost), "currency": this.SafeCurrencyCode(feeCurrencyId), } } return this.SafeTrade(map[string]interface{} { "info": trade, "id": nil, "symbol": symbol, "timestamp": timestamp, "datetime": this.Iso8601(timestamp), "order": nil, "type": nil, "side": side, "takerOrMaker": nil, "price": this.ParseNumber(priceString), "amount": this.ParseNumber(amountString), "cost": this.ParseNumber(costString), "fee": fee, }, market) } /** * @method * @name coinspot#createOrder * @description create a trade order * @see https://www.coinspot.com.au/api#placebuyorder * @param {string} symbol unified symbol of the market to create an order in * @param {string} type must be 'limit' * @param {string} side 'buy' or 'sell' * @param {float} amount how much of currency you want to trade in units of base currency * @param {float} [price] the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders * @param {object} [params] extra parameters specific to the exchange API endpoint * @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure} */ func (this *coinspot) CreateOrder(symbol interface{}, typeVar interface{}, side interface{}, amount interface{}, optionalArgs ...interface{}) <- chan interface{} { ch := make(chan interface{}) go func() interface{} { defer close(ch) defer ReturnPanicError(ch) price := GetArg(optionalArgs, 0, nil) _ = price params := GetArg(optionalArgs, 1, map[string]interface{} {}) _ = params retRes5638 := (<-this.LoadMarkets()) PanicOnError(retRes5638) var method interface{} = Add("privatePostMy", this.Capitalize(side)) if IsTrue(IsEqual(typeVar, "market")) { panic(ExchangeError(Add(this.Id, " createOrder() allows limit orders only"))) } var market interface{} = this.Market(symbol) var request interface{} = map[string]interface{} { "cointype": GetValue(market, "id"), "amount": amount, "rate": price, } retRes57415 := (<-this.callDynamically(method, this.Extend(request, params))) PanicOnError(retRes57415) ch <- retRes57415 return nil }() return ch } /** * @method * @name coinspot#cancelOrder * @description cancels an open order * @see https://www.coinspot.com.au/api#cancelbuyorder * @see https://www.coinspot.com.au/api#cancelsellorder * @param {string} id order id * @param {string} symbol not used by coinspot cancelOrder () * @param {object} [params] extra parameters specific to the exchange API endpoint * @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure} */ func (this *coinspot) CancelOrder(id interface{}, optionalArgs ...interface{}) <- chan interface{} { ch := make(chan interface{}) go func() interface{} { defer close(ch) defer ReturnPanicError(ch) symbol := GetArg(optionalArgs, 0, nil) _ = symbol params := GetArg(optionalArgs, 1, map[string]interface{} {}) _ = params var side interface{} = this.SafeString(params, "side") if IsTrue(IsTrue(!IsEqual(side, "buy")) && IsTrue(!IsEqual(side, "sell"))) { panic(ArgumentsRequired(Add(this.Id, " cancelOrder() requires a side parameter, \"buy\" or \"sell\""))) } params = this.Omit(params, "side") var request interface{} = map[string]interface{} { "id": id, } var response interface{} = nil if IsTrue(IsEqual(side, "buy")) { response = (<-this.PrivatePostMyBuyCancel(this.Extend(request, params))) PanicOnError(response) } else { response = (<-this.PrivatePostMySellCancel(this.Extend(request, params))) PanicOnError(response) } // // status - ok, error // ch <- this.SafeOrder(map[string]interface{} { "info": response, }) return nil }() return ch } func (this *coinspot) Sign(path interface{}, optionalArgs ...interface{}) interface{} { api := GetArg(optionalArgs, 0, "public") _ = api method := GetArg(optionalArgs, 1, "GET") _ = method params := GetArg(optionalArgs, 2, map[string]interface{} {}) _ = params headers := GetArg(optionalArgs, 3, nil) _ = headers body := GetArg(optionalArgs, 4, nil) _ = body var url interface{} = Add(Add(GetValue(GetValue(this.Urls, "api"), api), "/"), path) if IsTrue(IsEqual(api, "private")) { this.CheckRequiredCredentials() var nonce interface{} = this.Nonce() body = this.Json(this.Extend(map[string]interface{} { "nonce": nonce, }, params)) headers = map[string]interface{} { "Content-Type": "application/json", "key": this.ApiKey, "sign": this.Hmac(this.Encode(body), this.Encode(this.Secret), sha512), } } return map[string]interface{} { "url": url, "method": method, "body": body, "headers": headers, } } func (this *coinspot) Init(userConfig map[string]interface{}) { this.Exchange = Exchange{} this.Exchange.InitParent(userConfig, this.Describe().(map[string]interface{}), this) this.Exchange.DerivedExchange = this }