Skip to content

Commit 075a05a

Browse files
Merge pull request googleapis#131 from tmatsuo/discovery-cache
Fixed a NameError on exception; added a unit test.
2 parents a1fef46 + 3772f9d commit 075a05a

File tree

2 files changed

+18
-4
lines changed

2 files changed

+18
-4
lines changed

googleapiclient/discovery.py

+10-4
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
]
3030

3131
from six import StringIO
32+
from six.moves import http_client
3233
from six.moves.urllib.parse import urlencode, urlparse, urljoin, \
3334
urlunparse, parse_qsl
3435

@@ -190,7 +191,15 @@ def build(serviceName,
190191

191192
requested_url = uritemplate.expand(discoveryServiceUrl, params)
192193

193-
content = _retrieve_discovery_doc(requested_url, http, cache_discovery, cache)
194+
try:
195+
content = _retrieve_discovery_doc(requested_url, http, cache_discovery,
196+
cache)
197+
except HttpError as e:
198+
if e.resp.status == http_client.NOT_FOUND:
199+
raise UnknownApiNameOrVersion("name: %s version: %s" % (serviceName,
200+
version))
201+
else:
202+
raise e
194203

195204
return build_from_document(content, base=discoveryServiceUrl, http=http,
196205
developerKey=developerKey, model=model, requestBuilder=requestBuilder,
@@ -232,9 +241,6 @@ def _retrieve_discovery_doc(url, http, cache_discovery, cache=None):
232241

233242
resp, content = http.request(actual_url)
234243

235-
if resp.status == 404:
236-
raise UnknownApiNameOrVersion("name: %s version: %s" % (serviceName,
237-
version))
238244
if resp.status >= 400:
239245
raise HttpError(resp, content, uri=actual_url)
240246

tests/test_discovery.py

+8
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@
5959
from googleapiclient.errors import MediaUploadSizeError
6060
from googleapiclient.errors import ResumableUploadError
6161
from googleapiclient.errors import UnacceptableMimeTypeError
62+
from googleapiclient.errors import UnknownApiNameOrVersion
6263
from googleapiclient.http import BatchHttpRequest
6364
from googleapiclient.http import HttpMock
6465
from googleapiclient.http import HttpMockSequence
@@ -347,6 +348,13 @@ def test_failed_to_parse_discovery_json(self):
347348
except InvalidJsonError:
348349
pass
349350

351+
def test_unknown_api_name_or_version(self):
352+
http = HttpMockSequence([
353+
({'status': '404'}, open(datafile('zoo.json'), 'rb').read()),
354+
])
355+
with self.assertRaises(UnknownApiNameOrVersion):
356+
plus = build('plus', 'v1', http=http, cache_discovery=False)
357+
350358

351359
class DiscoveryFromDocument(unittest.TestCase):
352360

0 commit comments

Comments
 (0)