Added in support for developer keys
diff --git a/apiclient/discovery.py b/apiclient/discovery.py
index 3d30fbd..bb5c305 100644
--- a/apiclient/discovery.py
+++ b/apiclient/discovery.py
@@ -109,7 +109,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 +141,7 @@
       self._http = http
       self._baseUrl = base
       self._model = model
+      self._developerKey = developerKey
 
     def auth_discovery(self):
       return auth_discovery
@@ -149,7 +150,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 +160,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 +170,7 @@
       self._http = http
       self._baseUrl = baseUrl
       self._model = model
+      self._developerKey = developerKey
 
   def createMethod(theclass, methodName, methodDesc, futureDesc):
     pathUrl = methodDesc['pathUrl']
@@ -223,6 +225,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 +271,13 @@
       except (KeyError, TypeError):
         return None
 
+      if self._developerKey:
+        parsed = list(urlparse.urlparse(url))
+        q = urlparse.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)