

def request(self, method, url, **kwargs):
    'Send an http request with the specified characteristics.\n\n        Wrapper around `requests.Session.request` to handle tasks such as\n        setting headers, JSON encoding/decoding, and error handling.\n\n        :param method: method of HTTP request\n        :param url: URL of HTTP request\n        :param kwargs: any other parameter that can be passed to\n             requests.Session.request (such as `headers`) or `json`\n             that will be encoded as JSON and used as `data` argument\n        '
    kwargs.setdefault('headers', {
        
    })
    kwargs['headers']['User-Agent'] = self.user_agent
    if self.original_ip:
        kwargs['headers']['Forwarded'] = ('for=%s;by=%s' % (self.original_ip, self.user_agent))
    if (self.timeout is not None):
        kwargs.setdefault('timeout', self.timeout)
    kwargs.setdefault('verify', self.verify)
    if (self.cert is not None):
        kwargs.setdefault('cert', self.cert)
    self.serialize(kwargs)
    self._http_log_req(method, url, kwargs)
    if self.timings:
        start_time = time.time()
    resp = self.http.request(method, url, **kwargs)
    if self.timings:
        self.times.append((('%s %s' % (method, url)), start_time, time.time()))
    self._http_log_resp(resp)
    self.last_request_id = resp.headers.get('x-openstack-request-id')
    if (resp.status_code >= 400):
        _logger.debug('Request returned failure status: %s', resp.status_code)
        raise exceptions.from_response(resp, method, url)
    return resp

dataset/ETHPy150Open openstack-infra/python-storyboardclient/storyboardclient/openstack/common/apiclient/client.py HTTPClient.request/original