Ejemplo n.º 1
0
 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)
Ejemplo n.º 2
0
 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))
Ejemplo n.º 3
0
 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)
Ejemplo n.º 4
0
 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))
Ejemplo n.º 5
0
 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)
Ejemplo n.º 6
0
 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))