def request_raw(self, method, url, params=None, supplied_headers=None):
        """
        Mechanism for issuing an API call
        """
        from stripe import api_version

        if self.api_key:
            my_api_key = self.api_key
        else:
            from stripe import api_key
            my_api_key = api_key

        if my_api_key is None:
            raise error.AuthenticationError(
                'No API key provided. (HINT: set your API key using '
                '"stripe.api_key = <API-KEY>"). You can generate API keys '
                'from the Stripe web interface.  See https://stripe.com/api '
                'for details, or email support@stripe.com if you have any '
                'questions.')

        abs_url = '%s%s' % (self.api_base, url)

        encoded_params = urllib.urlencode(list(_api_encode(params or {})))

        if method == 'get' or method == 'delete':
            if params:
                abs_url = _build_api_url(abs_url, encoded_params)
            post_data = None
        elif method == 'post':
            if supplied_headers is not None and \
                    supplied_headers.get("Content-Type") == \
                    "multipart/form-data":
                generator = MultipartDataGenerator()
                generator.add_params(params or {})
                post_data = generator.get_post_data()
                supplied_headers["Content-Type"] = \
                    "multipart/form-data; boundary=%s" % (generator.boundary,)
            else:
                post_data = encoded_params
        else:
            raise error.APIConnectionError(
                'Unrecognized HTTP method %r.  This may indicate a bug in the '
                'Stripe bindings.  Please contact support@stripe.com for '
                'assistance.' % (method,))

        ua = {
            'bindings_version': version.VERSION,
            'lang': 'python',
            'publisher': 'stripe',
            'httplib': self._client.name,
        }
        for attr, func in [['lang_version', platform.python_version],
                           ['platform', platform.platform],
                           ['uname', lambda: ' '.join(platform.uname())]]:
            try:
                val = func()
            except Exception as e:
                val = "!! %s" % (e,)
            ua[attr] = val

        headers = {
            'X-Stripe-Client-User-Agent': util.json.dumps(ua),
            'User-Agent': 'Stripe/v1 PythonBindings/%s' % (version.VERSION,),
            'Authorization': 'Bearer %s' % (my_api_key,)
        }

        if self.stripe_account:
            headers['Stripe-Account'] = self.stripe_account

        if method == 'post':
            headers['Content-Type'] = 'application/x-www-form-urlencoded'

        if api_version is not None:
            headers['Stripe-Version'] = api_version

        if supplied_headers is not None:
            for key, value in supplied_headers.items():
                headers[key] = value

        util.log_info('Request to Stripe api', method=method, path=abs_url)
        util.log_debug(
            'Post details', post_data=post_data, api_version=api_version)

        rbody, rcode, rheaders = self._client.request(
            method, abs_url, headers, post_data)

        util.log_info(
            'Stripe API response', path=abs_url, response_code=rcode)
        util.log_debug('API response body', body=rbody)
        if 'Request-Id' in rheaders:
            util.log_debug('Dashboard link for request',
                           link=util.dashboard_link(rheaders['Request-Id']))
        return rbody, rcode, rheaders, my_api_key
def request_raw ( self , method , url , params = None , supplied_headers = None ) : from stripe import api_version if self . api_key : my_api_key = self . api_key else : from stripe import api_key my_api_key = api_key if my_api_key is None : raise error . AuthenticationError ( 'No API key provided. (HINT: set your API key using ' '"stripe.api_key = <API-KEY>"). You can generate API keys ' 'from the Stripe web interface.  See https://stripe.com/api ' 'for details, or email support@stripe.com if you have any ' 'questions.' ) abs_url = '%s%s' % ( self . api_base , url ) encoded_params = urllib . urlencode ( list ( _api_encode ( params or { } ) ) ) if method == 'get' or method == 'delete' : if params : abs_url = _build_api_url ( abs_url , encoded_params ) post_data = None elif method == 'post' : if supplied_headers is not None and supplied_headers . get ( "Content-Type" ) == "multipart/form-data" : generator = MultipartDataGenerator ( ) generator . add_params ( params or { } ) post_data = generator . get_post_data ( ) supplied_headers [ "Content-Type" ] = "multipart/form-data; boundary=%s" % ( generator . boundary , ) else : post_data = encoded_params else : raise error . APIConnectionError ( 'Unrecognized HTTP method %r.  This may indicate a bug in the ' 'Stripe bindings.  Please contact support@stripe.com for ' 'assistance.' % ( method , ) ) ua = { 'bindings_version' : version . VERSION , 'lang' : 'python' , 'publisher' : 'stripe' , 'httplib' : self . _client . name , } for attr , func in [ [ 'lang_version' , platform . python_version ] , [ 'platform' , platform . platform ] , [ 'uname' , lambda : ' ' . join ( platform . uname ( ) ) ] ] : try : val = func ( ) except Exception as e : val = "!! %s" % ( e , ) ua [ attr ] = val headers = { 'X-Stripe-Client-User-Agent' : util . json . dumps ( ua ) , 'User-Agent' : 'Stripe/v1 PythonBindings/%s' % ( version . VERSION , ) , 'Authorization' : 'Bearer %s' % ( my_api_key , ) } if self . stripe_account : headers [ 'Stripe-Account' ] = self . stripe_account if method == 'post' : headers [ 'Content-Type' ] = 'application/x-www-form-urlencoded' if api_version is not None : headers [ 'Stripe-Version' ] = api_version if supplied_headers is not None : for key , value in supplied_headers . items ( ) : headers [ key ] = value util . log_info ( 'Request to Stripe api' , method = method , path = abs_url ) util . log_debug ( 'Post details' , post_data = post_data , api_version = api_version ) rbody , rcode , rheaders = self . _client . request ( method , abs_url , headers , post_data ) util . log_info ( 'Stripe API response' , path = abs_url , response_code = rcode ) util . log_debug ( 'API response body' , body = rbody ) if 'Request-Id' in rheaders : util . log_debug ( 'Dashboard link for request' , link = util . dashboard_link ( rheaders [ 'Request-Id' ] ) ) return rbody , rcode , rheaders , my_api_key
Mechanism for issuing an API call