def handle_errors(self, code, reason, url, method, headers, body, response=None): if code == 520: raise ExchangeNotAvailable(self.id + ' ' + body) if body.find('Invalid order') >= 0: raise InvalidOrder(self.id + ' ' + body) if body.find('Invalid nonce') >= 0: raise InvalidNonce(self.id + ' ' + body) if body.find('Insufficient funds') >= 0: raise InsufficientFunds(self.id + ' ' + body) if body.find('Cancel pending') >= 0: raise CancelPending(self.id + ' ' + body) if body.find('Invalid arguments:volume') >= 0: raise InvalidOrder(self.id + ' ' + body) if body[0] == '{': response = json.loads(body) if not isinstance(response, basestring): if 'error' in response: numErrors = len(response['error']) if numErrors: message = self.id + ' ' + self.json(response) for i in range(0, len(response['error'])): if response['error'][i] in self.exceptions: raise self.exceptions[response['error'][i]]( message) raise ExchangeError(message)
def handle_errors(self, code, reason, url, method, headers, body): response = None try: response = json.loads(body) except Exception as e: # syntax error, resort to default error handler return if 'error' in response: error = response['error'] feedback = self.id + ' ' + self.json(response) if error == 'Invalid order number, or you are not the person who placed the order.': raise OrderNotFound(feedback) elif error == 'Order not found, or you are not the person who placed it.': raise OrderNotFound(feedback) elif error == 'Invalid API key/secret pair.': raise AuthenticationError(feedback) elif error == 'Please do not make more than 8 API calls per second.': raise DDoSProtection(feedback) elif error.find('Total must be at least') >= 0: raise InvalidOrder(feedback) elif error.find('Not enough') >= 0: raise InsufficientFunds(feedback) elif error.find('Nonce must be greater') >= 0: raise InvalidNonce(feedback) elif error.find( 'You have already called cancelOrder or moveOrder on self order.' ) >= 0: raise CancelPending(feedback) else: raise ExchangeError(self.id + ': unknown error: ' + self.json(response))
def handle_errors(self, code, reason, url, method, headers, body): if body.find('Invalid nonce') >= 0: raise InvalidNonce(self.id + ' ' + body) if body.find('Insufficient funds') >= 0: raise InsufficientFunds(self.id + ' ' + body) if body.find('Cancel pending') >= 0: raise CancelPending(self.id + ' ' + body)
def handle_errors(self, code, reason, url, method, headers, body): response = None try: response = json.loads(body) except Exception as e: # syntax error, resort to default error handler return # {"error":"Permission denied."} if 'error' in response: message = response['error'] feedback = self.id + ' ' + self.json(response) exceptions = self.exceptions if message in exceptions: raise exceptions[message](feedback) elif message.find('Total must be at least') >= 0: raise InvalidOrder(feedback) elif message.find('This account is frozen.') >= 0: raise AccountSuspended(feedback) elif message.find('Not enough') >= 0: raise InsufficientFunds(feedback) elif message.find('Nonce must be greater') >= 0: raise InvalidNonce(feedback) elif message.find('You have already called cancelOrder or moveOrder on self order.') >= 0: raise CancelPending(feedback) else: raise ExchangeError(self.id + ' unknown error ' + self.json(response))
def handle_errors(self, code, reason, url, method, headers, body): if code >= 400: if body[0] == '{': response = json.loads(body) if 'error' in response: error = self.id + ' ' + body if response['error'].find('Total must be at least') >= 0: raise InvalidOrder(error) elif response['error'].find('Not enough') >= 0: raise InsufficientFunds(error) elif response['error'].find('Nonce must be greater') >= 0: raise ExchangeNotAvailable(error) elif response['error'].find('You have already called cancelOrder or moveOrder on self order.') >= 0: raise CancelPending(error)
def handle_errors(self, code, reason, url, method, headers, body): if body[0] == '{': response = json.loads(body) if 'error' in response: error = response['error'] feedback = self.id + ' ' + self.json(response) if error == 'Invalid order number, or you are not the person who placed the order.': raise OrderNotFound(feedback) elif error.find('Total must be at least') >= 0: raise InvalidOrder(feedback) elif error.find('Not enough') >= 0: raise InsufficientFunds(feedback) elif error.find('Nonce must be greater') >= 0: raise ExchangeNotAvailable(feedback) elif error.find('You have already called cancelOrder or moveOrder on self order.') >= 0: raise CancelPending(feedback) else: raise ExchangeError(self.id + ': unknown error: ' + self.json(response))