Switch to new discovery path parameters.
Reviewed in http://codereview.appspot.com/6374064/.
diff --git a/apiclient/discovery.py b/apiclient/discovery.py
index 84227ae..cf83530 100644
--- a/apiclient/discovery.py
+++ b/apiclient/discovery.py
@@ -208,7 +208,7 @@
def build_from_document(
service,
- base,
+ base=None,
future=None,
http=None,
developerKey=None,
@@ -222,6 +222,8 @@
Args:
service: string, discovery document.
base: string, base URI for all HTTP requests, usually the discovery URI.
+ This parameter is no longer used as rootUrl and servicePath are included
+ within the discovery document. (deprecated)
future: string, discovery document with future capabilities (deprecated).
http: httplib2.Http, An instance of httplib2.Http or something that acts
like it that HTTP requests will be made through.
@@ -239,7 +241,7 @@
future = {}
service = simplejson.loads(service)
- base = urlparse.urljoin(base, service['basePath'])
+ base = urlparse.urljoin(service['rootUrl'], service['servicePath'])
schema = Schemas(service)
if model is None:
@@ -363,10 +365,8 @@
maxSize = 0
if 'mediaUpload' in methodDesc:
mediaUpload = methodDesc['mediaUpload']
- # TODO(jcgregorio) Use URLs from discovery once it is updated.
- parsed = list(urlparse.urlparse(baseUrl))
- basePath = parsed[2]
- mediaPathUrl = '/upload' + basePath + pathUrl
+ mediaPathUrl = (rootDesc['rootUrl'] + 'upload/' + rootDesc['servicePath']
+ + pathUrl)
accept = mediaUpload['accept']
maxSize = _media_size_to_long(mediaUpload.get('maxSize', ''))
diff --git a/tests/data/latitude.json b/tests/data/latitude.json
index 99967ef..7717f90 100644
--- a/tests/data/latitude.json
+++ b/tests/data/latitude.json
@@ -13,6 +13,8 @@
],
"protocol": "rest",
"basePath": "/latitude/v1/",
+ "rootUrl": "https://www.googleapis.com/",
+ "servicePath": "latitude/v1/",
"auth": {
"oauth2": {
"scopes": {
diff --git a/tests/data/plus.json b/tests/data/plus.json
index fdcd30c..36d3ae9 100644
--- a/tests/data/plus.json
+++ b/tests/data/plus.json
@@ -15,6 +15,8 @@
],
"protocol": "rest",
"basePath": "/plus/v1/",
+ "rootUrl": "https://www.googleapis.com/",
+ "servicePath": "plus/v1/",
"parameters": {
"alt": {
"type": "string",
diff --git a/tests/data/tasks.json b/tests/data/tasks.json
index ed3d61f..ee7be10 100644
--- a/tests/data/tasks.json
+++ b/tests/data/tasks.json
@@ -15,6 +15,8 @@
],
"protocol": "rest",
"basePath": "/tasks/v1/",
+ "rootUrl": "https://www.googleapis.com/",
+ "servicePath": "tasks/v1/",
"parameters": {
"alt": {
"type": "string",
diff --git a/tests/data/zoo.json b/tests/data/zoo.json
index 0df7f7b..4c23584 100644
--- a/tests/data/zoo.json
+++ b/tests/data/zoo.json
@@ -4,6 +4,8 @@
"version": "v1",
"description": "Zoo API used for Apiary testing",
"basePath": "/zoo/",
+ "rootUrl": "https://www.googleapis.com/",
+ "servicePath": "zoo/v1/",
"rpcPath": "/rpc",
"parameters": {
"alt": {
diff --git a/tests/test_discovery.py b/tests/test_discovery.py
index bec272c..b1656c4 100644
--- a/tests/test_discovery.py
+++ b/tests/test_discovery.py
@@ -85,7 +85,7 @@
base = "https://www.example.com/"
plus = build_from_document(discovery, base=base)
- self.assertEquals(base + "plus/v1/", plus._baseUrl)
+ self.assertEquals("https://www.googleapis.com/plus/v1/", plus._baseUrl)
class DiscoveryFromHttp(unittest.TestCase):
@@ -282,7 +282,7 @@
self.assertTrue(getattr(zoo, 'animals'))
request = zoo.global_().print_().assert_(max_results="5")
parsed = urlparse.urlparse(request.uri)
- self.assertEqual(parsed[2], '/zoo/global/print/assert')
+ self.assertEqual(parsed[2], '/zoo/v1/global/print/assert')
def test_top_level_functions(self):
self.http = HttpMock(datafile('zoo.json'), {'status': '200'})
@@ -330,7 +330,7 @@
self.assertEquals('image/png', request.headers['content-type'])
self.assertEquals('PNG', request.body[1:4])
self.assertEqual(
- 'https://www.googleapis.com/upload/zoo/animals?uploadType=media&alt=json',
+ 'https://www.googleapis.com/upload/zoo/v1/animals?uploadType=media&alt=json',
request.uri)
def test_multipart_media_raise_correct_exceptions(self):
@@ -358,7 +358,7 @@
'multipart/related'))
self.assertEquals('--==', request.body[0:4])
self.assertEqual(
- 'https://www.googleapis.com/upload/zoo/animals?uploadType=multipart&alt=json',
+ 'https://www.googleapis.com/upload/zoo/v1/animals?uploadType=multipart&alt=json',
request.uri)
def test_media_capable_method_without_media(self):
@@ -476,7 +476,7 @@
media_upload = MediaFileUpload(datafile('small.png'), resumable=True)
request = zoo.animals().insert(media_body=media_upload, body=None)
self.assertEqual(
- 'https://www.googleapis.com/upload/zoo/animals?uploadType=resumable&alt=json',
+ 'https://www.googleapis.com/upload/zoo/v1/animals?uploadType=resumable&alt=json',
request.uri)
http = HttpMockSequence([