Revision 10f5ab6c lib/rapi/client.py
b/lib/rapi/client.py | ||
---|---|---|
351 | 351 |
"User-Agent": self.USER_AGENT, |
352 | 352 |
} |
353 | 353 |
|
354 |
@staticmethod |
|
355 |
def _EncodeQuery(query): |
|
356 |
"""Encode query values for RAPI URL. |
|
357 |
|
|
358 |
@type query: list of two-tuples |
|
359 |
@param query: Query arguments |
|
360 |
@rtype: list |
|
361 |
@return: Query list with encoded values |
|
362 |
|
|
363 |
""" |
|
364 |
result = [] |
|
365 |
|
|
366 |
for name, value in query: |
|
367 |
if value is None: |
|
368 |
result.append((name, "")) |
|
369 |
|
|
370 |
elif isinstance(value, bool): |
|
371 |
# Boolean values must be encoded as 0 or 1 |
|
372 |
result.append((name, int(value))) |
|
373 |
|
|
374 |
elif isinstance(value, (list, tuple, dict)): |
|
375 |
raise ValueError("Invalid query data type %r" % type(value).__name__) |
|
376 |
|
|
377 |
else: |
|
378 |
result.append((name, value)) |
|
379 |
|
|
380 |
return result |
|
381 |
|
|
354 | 382 |
def _SendRequest(self, method, path, query, content): |
355 | 383 |
"""Sends an HTTP request. |
356 | 384 |
|
... | ... | |
384 | 412 |
url = [self._base_url, path] |
385 | 413 |
if query: |
386 | 414 |
url.append("?") |
387 |
url.append(urllib.urlencode(query))
|
|
415 |
url.append(urllib.urlencode(self._EncodeQuery(query)))
|
|
388 | 416 |
|
389 | 417 |
req = _RapiRequest(method, "".join(url), self._headers, encoded_content) |
390 | 418 |
|
Also available in: Unified diff