Revision 6ad9e577
b/kamaki/clients/__init__.py | ||
---|---|---|
210 | 210 |
self.request = request |
211 | 211 |
self._request_performed = False |
212 | 212 |
self.poolsize = poolsize |
213 |
self._headers_to_decode, self._header_prefices = [], [] |
|
214 |
|
|
215 |
def _get_headers_to_decode(self, headers): |
|
216 |
keys = set([k.lower() for k, v in headers]) |
|
217 |
encodable = list(keys.intersection(self.headers_to_decode)) |
|
218 |
|
|
219 |
def has_prefix(s): |
|
220 |
for k in self.header_prefices: |
|
221 |
if s.startswith(k): |
|
222 |
return True |
|
223 |
return False |
|
224 |
return encodable + filter(has_prefix, keys.difference(encodable)) |
|
213 | 225 |
|
214 | 226 |
def _get_response(self): |
215 | 227 |
if self._request_performed: |
... | ... | |
237 | 249 |
'%d %s%s' % ( |
238 | 250 |
self.status_code, self.status, plog)) |
239 | 251 |
self._headers = dict() |
240 |
for k, v in r.getheaders(): |
|
252 |
|
|
253 |
r_headers = r.getheaders() |
|
254 |
enc_headers = self._get_headers_to_decode(r_headers) |
|
255 |
for k, v in r_headers: |
|
241 | 256 |
if k.lower in ('x-auth-token', ) and ( |
242 | 257 |
not self.LOG_TOKEN): |
243 | 258 |
self._token, v = v, '...' |
244 |
v = unquote(v).decode('utf-8') |
|
259 |
elif k.lower() in enc_headers: |
|
260 |
v = unquote(v).decode('utf-8') |
|
245 | 261 |
self._headers[k] = v |
246 | 262 |
recvlog.info(' %s: %s%s' % (k, v, plog)) |
247 | 263 |
self._content = r.read() |
... | ... | |
298 | 314 |
return '%s' % self._content |
299 | 315 |
|
300 | 316 |
@property |
317 |
def headers_to_decode(self): |
|
318 |
return self._headers_to_decode |
|
319 |
|
|
320 |
@headers_to_decode.setter |
|
321 |
def headers_to_decode(self, header_keys): |
|
322 |
self._headers_to_decode += [k.lower() for k in header_keys] |
|
323 |
self._headers_to_decode = list(set(self._headers_to_decode)) |
|
324 |
|
|
325 |
@property |
|
326 |
def header_prefices(self): |
|
327 |
return self._header_prefices |
|
328 |
|
|
329 |
@header_prefices.setter |
|
330 |
def header_prefices(self, header_key_prefices): |
|
331 |
self._header_prefices += [p.lower() for p in header_key_prefices] |
|
332 |
self._header_prefices = list(set(self._header_prefices)) |
|
333 |
|
|
334 |
@property |
|
301 | 335 |
def json(self): |
302 | 336 |
""" |
303 | 337 |
:returns: (dict) squeezed from json-formated content |
Also available in: Unified diff