Revision 2aa8f6d1 kamaki/clients/__init__.py
b/kamaki/clients/__init__.py | ||
---|---|---|
57 | 57 |
requests.Response.status = property(_status) |
58 | 58 |
|
59 | 59 |
|
60 |
class XAuthTokenAuth(AuthBase): |
|
61 |
def __init__(self, token): |
|
62 |
self.token = token |
|
63 |
|
|
64 |
def __call__(self, r): |
|
65 |
r.headers['X-Auth-Token'] = self.token |
|
66 |
return r |
|
67 |
|
|
68 |
|
|
69 | 60 |
class ClientError(Exception): |
70 | 61 |
def __init__(self, message, status=0, details=''): |
71 | 62 |
self.message = message |
... | ... | |
76 | 67 |
class Client(object): |
77 | 68 |
def __init__(self, base_url, token): |
78 | 69 |
self.base_url = base_url |
79 |
self.auth = XAuthTokenAuth(token)
|
|
80 |
|
|
70 |
self.token = token
|
|
71 |
|
|
81 | 72 |
def raise_for_status(self, r): |
82 | 73 |
message = "%d %s" % (r.status_code, r.status) |
83 | 74 |
details = r.text |
... | ... | |
86 | 77 |
def request(self, method, path, **kwargs): |
87 | 78 |
raw = kwargs.pop('raw', False) |
88 | 79 |
success = kwargs.pop('success', 200) |
80 |
|
|
81 |
data = kwargs.pop('data', None) |
|
82 |
headers = kwargs.pop('headers', {}) |
|
83 |
headers.setdefault('X-Auth-Token', self.token) |
|
84 |
|
|
89 | 85 |
if 'json' in kwargs: |
90 | 86 |
data = json.dumps(kwargs.pop('json')) |
91 |
kwargs['data'] = data |
|
92 |
headers = kwargs.setdefault('headers', {}) |
|
93 |
headers['content-type'] = 'application/json' |
|
87 |
headers.setdefault('Content-Type', 'application/json') |
|
88 |
|
|
89 |
if data: |
|
90 |
headers.setdefault('Content-Length', str(len(data))) |
|
94 | 91 |
|
95 | 92 |
url = self.base_url + path |
96 |
kwargs.setdefault('auth', self.auth) |
|
97 | 93 |
kwargs.setdefault('verify', False) # Disable certificate verification |
98 |
r = requests.request(method, url, **kwargs) |
|
99 |
|
|
94 |
r = requests.request(method, url, headers=headers, data=data, **kwargs)
|
|
95 |
|
|
100 | 96 |
req = r.request |
101 | 97 |
sendlog.info('%s %s', req.method, req.url) |
102 | 98 |
for key, val in req.headers.items(): |
Also available in: Unified diff