Added support for repeating parameters
diff --git a/apiclient/discovery.py b/apiclient/discovery.py
index b202913..dbaac08 100644
--- a/apiclient/discovery.py
+++ b/apiclient/discovery.py
@@ -177,7 +177,7 @@
   return resource
 
 
-def _to_string(value, schema_type):
+def _cast(value, schema_type):
   """Convert value to a string based on JSON Schema type.
 
   See http://tools.ietf.org/html/draft-zyp-json-schema-03 for more details on
@@ -237,6 +237,7 @@
 
     argmap = {} # Map from method parameter name to query parameter name
     required_params = [] # Required parameters
+    repeated_params = [] # Repeated parameters
     pattern_params = {}  # Parameters that must match a regex
     query_params = [] # Parameters that will be used in the query string
     path_params = {} # Parameters that will be used in the base URL
@@ -255,6 +256,8 @@
           enum_params[param] = desc['enum']
         if desc.get('required', False):
           required_params.append(param)
+        if desc.get('repeated', False):
+          repeated_params.append(param)
         if desc.get('restParameterType') == 'query':
           query_params.append(param)
         if desc.get('restParameterType') == 'path':
@@ -294,11 +297,16 @@
       actual_query_params = {}
       actual_path_params = {}
       for key, value in kwargs.iteritems():
-        value_as_str = _to_string(value, param_type.get(key, 'string'))
+        to_type = param_type.get(key, 'string')
+        # For repeated parameters we cast each member of the list.
+        if key in repeated_params and type(value) == type([]):
+          cast_value = [_cast(x, to_type) for x in value]
+        else:
+          cast_value = _cast(value, to_type)
         if key in query_params:
-          actual_query_params[argmap[key]] = value_as_str
+          actual_query_params[argmap[key]] = cast_value
         if key in path_params:
-          actual_path_params[argmap[key]] = value_as_str
+          actual_path_params[argmap[key]] = cast_value
       body_value = kwargs.get('body', None)
 
       if self._developerKey:
@@ -330,17 +338,21 @@
 
     docs = [methodDesc.get('description', DEFAULT_METHOD_DOC), '\n\n']
     if len(argmap) > 0:
-      docs.append("Args:\n")
+      docs.append('Args:\n')
     for arg in argmap.iterkeys():
       if arg in STACK_QUERY_PARAMETERS:
         continue
-      required = ""
+      repeated = ''
+      if arg in repeated_params:
+        repeated = ' (repeated)'
+      required = ''
       if arg in required_params:
-        required = " (required)"
+        required = ' (required)'
       paramdesc = methodDesc['parameters'][argmap[arg]]
       paramdoc = paramdesc.get('description', 'A parameter')
       paramtype = paramdesc.get('type', 'string')
-      docs.append('  %s: %s, %s%s\n' % (arg, paramtype, paramdoc, required))
+      docs.append('  %s: %s, %s%s%s\n' % (arg, paramtype, paramdoc, required,
+                                          repeated))
       enum = paramdesc.get('enum', [])
       enumDesc = paramdesc.get('enumDescriptions', [])
       if enum and enumDesc:
@@ -430,7 +442,7 @@
   if futureDesc and 'methods' in futureDesc:
     for methodName, methodDesc in futureDesc['methods'].iteritems():
       if 'next' in methodDesc and methodName in resourceDesc['methods']:
-        createNextMethod(Resource, methodName + "_next",
+        createNextMethod(Resource, methodName + '_next',
                          resourceDesc['methods'][methodName],
                          methodDesc['next'])
 
diff --git a/apiclient/model.py b/apiclient/model.py
index 55bcc94..14ec397 100644
--- a/apiclient/model.py
+++ b/apiclient/model.py
@@ -127,9 +127,14 @@
     params.update({'alt': 'json'})
     astuples = []
     for key, value in params.iteritems():
-      if getattr(value, 'encode', False) and callable(value.encode):
-        value = value.encode('utf-8')
-      astuples.append((key, value))
+      if type(value) == type([]):
+        for x in value:
+          x = x.encode('utf-8')
+          astuples.append((key, x))
+      else:
+        if getattr(value, 'encode', False) and callable(value.encode):
+          value = value.encode('utf-8')
+        astuples.append((key, value))
     return '?' + urllib.urlencode(astuples)
 
   def response(self, resp, content):