Merged with the main repository. Added some conditional imports for compatibility with Python 2.5
diff --git a/apiclient/discovery.py b/apiclient/discovery.py
index 3d30fbd..0b441b1 100644
--- a/apiclient/discovery.py
+++ b/apiclient/discovery.py
@@ -28,6 +28,10 @@
import uritemplate
import urllib
import urlparse
+try:
+ from urlparse import parse_qsl
+except ImportError:
+ from cgi import parse_qsl
from apiclient.http import HttpRequest
try: # pragma: no cover
@@ -109,7 +113,7 @@
def build(serviceName, version, http=None,
- discoveryServiceUrl=DISCOVERY_URI, auth=None, model=JsonModel()):
+ discoveryServiceUrl=DISCOVERY_URI, developerKey=None, model=JsonModel()):
params = {
'api': serviceName,
'apiVersion': version
@@ -141,6 +145,7 @@
self._http = http
self._baseUrl = base
self._model = model
+ self._developerKey = developerKey
def auth_discovery(self):
return auth_discovery
@@ -149,7 +154,7 @@
def method(self, **kwargs):
return createResource(self._http, self._baseUrl, self._model,
- methodName, methodDesc, futureDesc)
+ methodName, self._developerKey, methodDesc, futureDesc)
setattr(method, '__doc__', 'A description of how to use this function')
setattr(theclass, methodName, method)
@@ -159,8 +164,8 @@
return Service()
-def createResource(http, baseUrl, model, resourceName, resourceDesc,
- futureDesc):
+def createResource(http, baseUrl, model, resourceName, developerKey,
+ resourceDesc, futureDesc):
class Resource(object):
"""A class for interacting with a resource."""
@@ -169,6 +174,7 @@
self._http = http
self._baseUrl = baseUrl
self._model = model
+ self._developerKey = developerKey
def createMethod(theclass, methodName, methodDesc, futureDesc):
pathUrl = methodDesc['pathUrl']
@@ -223,6 +229,9 @@
actual_path_params[argmap[key]] = value
body_value = kwargs.get('body', None)
+ if self._developerKey:
+ actual_query_params['key'] = self._developerKey
+
headers = {}
headers, params, query, body = self._model.request(headers,
actual_path_params, actual_query_params, body_value)
@@ -266,6 +275,13 @@
except (KeyError, TypeError):
return None
+ if self._developerKey:
+ parsed = list(urlparse.urlparse(url))
+ q = parse_qsl(parsed[4])
+ q.append(('key', self._developerKey))
+ parsed[4] = urllib.urlencode(q)
+ url = urlparse.urlunparse(parsed)
+
headers = {}
headers, params, query, body = self._model.request(headers, {}, {}, None)