Пример #1
0
    def specific_api_error(self, rbody, rcode, resp, rheaders, error_data):
        util.log_info(
            'Ping++ API error received',
            error_code=error_data.get('code'),
            error_type=error_data.get('type'),
            error_message=error_data.get('message'),
            error_param=error_data.get('param'),
        )

        if rcode in [400, 404]:
            raise error.InvalidRequestError(error_data.get('message'),
                                            error_data.get('param'),
                                            error_data.get('code'), rbody,
                                            rcode, resp, rheaders)
        elif rcode == 401:
            raise error.AuthenticationError(error_data.get('message'), rbody,
                                            rcode, resp, rheaders)
        elif rcode == 402:
            raise error.ChannelError(error_data.get('message'),
                                     error_data.get('param'),
                                     error_data.get('code'), rbody, rcode,
                                     resp, rheaders)
        elif rcode == 403:
            raise error.RateLimitError(error_data.get('message'), rbody, rcode,
                                       resp, rheaders)
        else:
            raise error.APIError(error_data.get('message'), rbody, rcode, resp,
                                 rheaders)
Пример #2
0
 def all(cls, app_id=None, api_key=None, **params):
     if params and params['app']['id'] is None:
         raise error.InvalidRequestError('Please pass app[id] as parameter',
                                         'app[id]')
     requestor = api_requestor.APIRequestor(api_key)
     url = cls.class_url()
     response, api_key = requestor.request('get', url, params)
     return convert_to_pingpp_object(response, api_key)
Пример #3
0
 def instance_url(self):
     id = self.get('id')
     if not id:
         raise error.InvalidRequestError(
             'Could not determine which URL to request: %s instance '
             'has invalid ID: %r' % (type(self).__name__, id), 'id')
     id = util.utf8(id)
     base = self.class_url()
     extn = urllib.quote_plus(id)
     return "%s/%s" % (base, extn)
Пример #4
0
 def retrieve(cls, id, refund_id=None, api_key=None, app=None, **params):
     if not refund_id:
         raise error.InvalidRequestError(
             'Could not determine which URL to request: %s instance '
             'has invalid ID: %r' % (type(cls).__name__, refund_id), 'id')
     instance = cls(id, api_key, **params)
     requestor = api_requestor.APIRequestor(api_key)
     url = "%s/%s/refunds/%s" % (instance.class_url(), id, refund_id)
     response, api_key = requestor.request('get', url, params)
     return convert_to_pingpp_object(response, api_key)
Пример #5
0
    def instance_url(self):
        id = self.get('id')
        if not isinstance(id, six.string_types):
            raise error.InvalidRequestError(
                'Could not determine which URL to request: %s instance '
                'has invalid ID: %r, %s. ID should be of type `str` (or'
                ' `unicode`)' % (type(self).__name__, id, type(id)), 'id')

        id = util.utf8(id)
        base = self.class_url()
        extn = quote_plus(id)
        return "%s/%s" % (base, extn)
Пример #6
0
    def handle_api_error(self, rbody, rcode, resp):
        try:
            err = resp['error']
        except (KeyError, TypeError):
            raise error.APIError(
                "Invalid response object from API: %r (HTTP response code "
                "was %d)" % (rbody, rcode), rbody, rcode, resp)

        if rcode in [400, 404]:
            raise error.InvalidRequestError(err.get('message'),
                                            err.get('param'), rbody, rcode,
                                            resp)
        elif rcode == 401:
            raise error.AuthenticationError(err.get('message'), rbody, rcode,
                                            resp)
        elif rcode == 402:
            raise error.ChannelError(err.get('message'), err.get('param'),
                                     err.get('code'), rbody, rcode, resp)
        else:
            raise error.APIError(err.get('message'), rbody, rcode, resp)
Пример #7
0
 def list(cls, *args, **params):
     if params and (('app' in params and 'id' in params['app'])
                    or 'app[id]' in params):
         return super(Charge, cls).list(*args, **params)
     raise error.InvalidRequestError(
         'Please pass app_id as parameter with key "app[id]"', 'app[id]')