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