def fetch_ticker(self, symbol, params={}): self.load_markets() market = self.market(symbol) request = { 'market_ids': market['id'], } response = self.publicGetTicker(self.extend(request, params)) # # { # "data":[ # { # "last":"0.022902", # "low":"0.021693", # "high":"0.024093", # "change":"-0.000047", # "base_volume":"15681.986", # "quote_volume":"360.514403624", # "market_id":"ETH-BTC", # "time":"2020-04-12T18:43:38.000Z" # } # ] # } # data = self.safe_value(response, 'data', []) ticker = self.safe_value(data, 0) if ticker is None: raise BadResponse(self.id + ' fetchTicker() returned an empty response') return self.parse_ticker(ticker, market)
async def fetch_ticker(self, symbol, params={}): await self.load_markets() market = self.market(symbol) request = { 'symbol': market['id'], } response = await self.marketGetTickers(self.extend(request, params)) # # [ # { # "symbol":"68719476706", # "name":"ETH/BTC", # "base":"2", # "quote":"32", # "timestamp":1575905991933, # "datetime":"2019-12-09T15:39:51.933Z", # "high":"0", # "low":"0", # "open":"0", # "close":"0", # "last":"0", # "change":"0", # "percentage":"0", # "baseVolume":"0", # "quoteVolume":"0" # } # ] # if isinstance(response, list): ticker = self.safe_value(response, 0) if ticker is None: raise BadResponse(self.id + ' fetchTicker() returned an empty response') return self.parse_ticker(ticker, market) return self.parse_ticker(response, market)
async def fetch_currencies(self, params={}): response = await self.publicGetInfoCoinInfo(params) if isinstance(response, basestring): if response.find('site is under maintenance') >= 0: raise OnMaintenance( self.id + ' fetchCurrencies() failed to fetch the currencies, the exchange is on maintenance' ) else: raise BadResponse( self.id + ' fetchCurrencies() failed to fetch the currencies') currencies = self.safe_value(response, 'info') result = {} for i in range(0, len(currencies)): currency = currencies[i] id = self.safe_string(currency, 'symbol') # todo: will need to rethink the fees # to add support for multiple withdrawal/deposit methods and # differentiated fees for each particular method code = self.safe_currency_code(id) precision = 8 # default precision, todo: fix "magic constants" walletStatus = self.safe_string(currency, 'walletStatus') active = (walletStatus == 'normal') name = self.safe_string(currency, 'name') fee = self.safe_float(currency, 'withdrawFee') result[code] = { 'id': id, 'code': code, 'info': currency, 'name': name, 'active': active, 'fee': fee, 'precision': precision, 'limits': { 'amount': { 'min': self.safe_float(currency, 'minOrderAmount'), 'max': math.pow(10, precision), }, 'price': { 'min': math.pow(10, -precision), 'max': math.pow(10, precision), }, 'cost': { 'min': self.safe_float(currency, 'minOrderAmount'), 'max': None, }, 'withdraw': { 'min': self.safe_float(currency, 'minWithdrawAmount'), 'max': math.pow(10, precision), }, 'deposit': { 'min': self.safe_float(currency, 'minDepositAmount'), 'max': None, }, }, } result = self.append_fiat_currencies(result) return result
def handle_errors(self, statusCode, statusText, url, method, responseHeaders, responseBody, response, requestHeaders, requestBody): if not response: return # fall back to default error handler code = self.safe_string(response, 'code') if code == '0': return # no error feedback = self.id + ' ' + responseBody if code is None: raise BadResponse(feedback) unknownError = [ExchangeError, feedback] ExceptionClass, message = self.safe_value(self.exceptions['exact'], code, unknownError) raise ExceptionClass(message)