From 6c62a96deaa5c7469468e85c9d4e250556096c85 Mon Sep 17 00:00:00 2001 From: Giorgos Verigakis Date: Wed, 4 Apr 2012 12:55:58 +0300 Subject: [PATCH] Add Content-Length header when sending data --- kamaki/clients/__init__.py | 30 +++++++++++++----------------- 1 file changed, 13 insertions(+), 17 deletions(-) diff --git a/kamaki/clients/__init__.py b/kamaki/clients/__init__.py index ebcea93..13c2390 100644 --- a/kamaki/clients/__init__.py +++ b/kamaki/clients/__init__.py @@ -57,15 +57,6 @@ def _status(self): requests.Response.status = property(_status) -class XAuthTokenAuth(AuthBase): - def __init__(self, token): - self.token = token - - def __call__(self, r): - r.headers['X-Auth-Token'] = self.token - return r - - class ClientError(Exception): def __init__(self, message, status=0, details=''): self.message = message @@ -76,8 +67,8 @@ class ClientError(Exception): class Client(object): def __init__(self, base_url, token): self.base_url = base_url - self.auth = XAuthTokenAuth(token) - + self.token = token + def raise_for_status(self, r): message = "%d %s" % (r.status_code, r.status) details = r.text @@ -86,17 +77,22 @@ class Client(object): def request(self, method, path, **kwargs): raw = kwargs.pop('raw', False) success = kwargs.pop('success', 200) + + data = kwargs.pop('data', None) + headers = kwargs.pop('headers', {}) + headers.setdefault('X-Auth-Token', self.token) + if 'json' in kwargs: data = json.dumps(kwargs.pop('json')) - kwargs['data'] = data - headers = kwargs.setdefault('headers', {}) - headers['content-type'] = 'application/json' + headers.setdefault('Content-Type', 'application/json') + + if data: + headers.setdefault('Content-Length', str(len(data))) url = self.base_url + path - kwargs.setdefault('auth', self.auth) kwargs.setdefault('verify', False) # Disable certificate verification - r = requests.request(method, url, **kwargs) - + r = requests.request(method, url, headers=headers, data=data, **kwargs) + req = r.request sendlog.info('%s %s', req.method, req.url) for key, val in req.headers.items(): -- 1.7.10.4