Handle regexs that are applied to repeating parameters. Reviewed in http://codereview.appspot.com/5413050/
diff --git a/apiclient/discovery.py b/apiclient/discovery.py
index 7cb4852..bcfdd69 100644
--- a/apiclient/discovery.py
+++ b/apiclient/discovery.py
@@ -393,10 +393,15 @@
for name, regex in pattern_params.iteritems():
if name in kwargs:
- if re.match(regex, kwargs[name]) is None:
- raise TypeError(
- 'Parameter "%s" value "%s" does not match the pattern "%s"' %
- (name, kwargs[name], regex))
+ if isinstance(kwargs[name], basestring):
+ pvalues = [kwargs[name]]
+ else:
+ pvalues = kwargs[name]
+ for pvalue in pvalues:
+ if re.match(regex, pvalue) is None:
+ raise TypeError(
+ 'Parameter "%s" value "%s" does not match the pattern "%s"' %
+ (name, pvalue, regex))
for name, enums in enum_params.iteritems():
if name in kwargs:
diff --git a/tests/data/zoo.json b/tests/data/zoo.json
index d4ae969..6e42da2 100644
--- a/tests/data/zoo.json
+++ b/tests/data/zoo.json
@@ -166,6 +166,13 @@
"foo",
"bar"
]
+ },
+ "rr": {
+ "type": "string",
+ "location": "query",
+ "required": false,
+ "repeated": true,
+ "pattern": "[a-z]+"
}
}
}
diff --git a/tests/test_discovery.py b/tests/test_discovery.py
index 3b544b0..606796e 100644
--- a/tests/test_discovery.py
+++ b/tests/test_discovery.py
@@ -168,6 +168,10 @@
request = zoo.query(
q="foo", i="1", n="1", b="", a=[1,2,3], o={'a':1}, e='bar')
+
+ request = zoo.query(
+ q="foo", i="1", n="1", b="", a=[1,2,3], o={'a':1}, e='bar', rr=['foo',
+ 'bar'])
self._check_query_types(request)
def test_optional_stack_query_parameters(self):