def getAPIversionHttpService(api):
hasLocalJSON = API.hasLocalJSON(api)
api, version, api_version, cred_family = API.getVersion(api)
httpObj = httplib2.Http(disable_ssl_certificate_validation=GC.Values[GC.NO_VERIFY_SSL],
cache=GM.Globals[GM.CACHE_DIR])
if not hasLocalJSON:
retries = 3
for n in range(1, retries+1):
try:
service = googleapiclient.discovery.build(api, version, http=httpObj, cache_discovery=False)
if GM.Globals[GM.CACHE_DISCOVERY_ONLY]:
httpObj.cache = None
return (api_version, httpObj, service, cred_family)
except httplib2.ServerNotFoundError as e:
systemErrorExit(NETWORK_ERROR_RC, str(e))
except googleapiclient.errors.UnknownApiNameOrVersion as e:
systemErrorExit(GOOGLE_API_ERROR_RC, Msg.UNKNOWN_API_OR_VERSION.format(str(e), __author__))
except (googleapiclient.errors.InvalidJsonError, KeyError, ValueError):
httpObj.cache = None
if n != retries:
waitOnFailure(n, retries, INVALID_JSON_RC, Msg.INVALID_JSON_INFORMATION)
continue
systemErrorExit(INVALID_JSON_RC, Msg.INVALID_JSON_INFORMATION)
except (http_client.ResponseNotReady, httplib2.SSLHandshakeError, socket.error) as e:
errMsg = u'Connection error: {0}'.format(str(e) or repr(e))
if n != retries:
waitOnFailure(n, retries, SOCKET_ERROR_RC, errMsg)
continue
systemErrorExit(SOCKET_ERROR_RC, errMsg)
disc_file, discovery = readDiscoveryFile(api_version)
try:
service = googleapiclient.discovery.build_from_document(discovery, http=httpObj)
if GM.Globals[GM.CACHE_DISCOVERY_ONLY]:
httpObj.cache = None
return (api_version, httpObj, service, cred_family)
except (KeyError, ValueError):
invalidDiscoveryJsonExit(disc_file)
评论列表
文章目录