Use v2 Discovery API URL when possible, remove google+ code

All newer APIs support a v2 Discovery URL that is preferred.
They have a fallback v1 URL also but in some cases this fallback
discovery file doesn't have all APIs and methods. We will use
v2 for all APIs that support it.

Also remove some old GPlus commands that are deprecated.
This commit is contained in:
Jay Lee
2019-04-05 13:02:45 -04:00
parent bd484cbe41
commit 204a689848
2 changed files with 28 additions and 49 deletions

View File

@ -1089,10 +1089,14 @@ def getService(api, http):
if GM_Globals[GM_CACHE_DISCOVERY_ONLY]: if GM_Globals[GM_CACHE_DISCOVERY_ONLY]:
http.cache = None http.cache = None
return service return service
if api in V1_DISCOVERY_APIS:
discoveryServiceUrl = googleapiclient.discovery.DISCOVERY_URI
else:
discoveryServiceUrl = googleapiclient.discovery.V2_DISCOVERY_URI
retries = 3 retries = 3
for n in range(1, retries+1): for n in range(1, retries+1):
try: try:
service = googleapiclient.discovery.build(api, version, http=http, cache_discovery=False) service = googleapiclient.discovery.build(api, version, http=http, cache_discovery=False, discoveryServiceUrl=discoveryServiceUrl)
GM_Globals[GM_CURRENT_API_SERVICES].setdefault(api, {}) GM_Globals[GM_CURRENT_API_SERVICES].setdefault(api, {})
GM_Globals[GM_CURRENT_API_SERVICES][api][version] = service._rootDesc.copy() GM_Globals[GM_CURRENT_API_SERVICES][api][version] = service._rootDesc.copy()
if GM_Globals[GM_CACHE_DISCOVERY_ONLY]: if GM_Globals[GM_CACHE_DISCOVERY_ONLY]:
@ -1268,10 +1272,6 @@ def buildGmailGAPIObject(user):
userEmail = convertUIDtoEmailAddress(user) userEmail = convertUIDtoEmailAddress(user)
return (userEmail, buildGAPIServiceObject(u'gmail', userEmail)) return (userEmail, buildGAPIServiceObject(u'gmail', userEmail))
def buildGplusGAPIObject(user):
userEmail = convertUIDtoEmailAddress(user)
return (userEmail, buildGAPIServiceObject(u'plus', userEmail))
def doCheckServiceAccount(users): def doCheckServiceAccount(users):
all_scopes = [] all_scopes = []
for _, scopes in API_SCOPE_MAPPING.items(): for _, scopes in API_SCOPE_MAPPING.items():
@ -5873,41 +5873,6 @@ def showGmailProfile(users):
sortCSVTitles([u'emailAddress',], titles) sortCSVTitles([u'emailAddress',], titles)
writeCSVfile(csvRows, titles, list_type=u'Gmail Profiles', todrive=todrive) writeCSVfile(csvRows, titles, list_type=u'Gmail Profiles', todrive=todrive)
def showGplusProfile(users):
todrive = False
i = 6
while i < len(sys.argv):
myarg = sys.argv[i].lower()
if myarg == u'todrive':
todrive = True
i += 1
else:
systemErrorExit(2, '%s is not a valid argument for gam <users> show gplusprofile' % sys.argv[i])
csvRows = []
titles = [u'id']
i = 0
count = len(users)
for user in users:
i += 1
user, gplus = buildGplusGAPIObject(user)
if not gplus:
continue
sys.stderr.write(u'Getting Gplus profile for %s\n' % user)
try:
results = callGAPI(gplus.people(), u'get',
throw_reasons=GAPI_GPLUS_THROW_REASONS,
userId=u'me')
if results:
results = flatten_json(results)
csvRows.append(results)
for item in results:
if item not in titles:
titles.append(item)
except GAPI_serviceNotAvailable:
entityServiceNotApplicableWarning(u'User', user, i, count)
sortCSVTitles([u'id',], titles)
writeCSVfile(csvRows, titles, list_type=u'Gplus Profiles', todrive=todrive)
def updateLabels(users): def updateLabels(users):
label_name = sys.argv[5] label_name = sys.argv[5]
label_name_lower = label_name.lower() label_name_lower = label_name.lower()
@ -7249,7 +7214,10 @@ def getCRMService(login_hint):
noPythonSSLExit() noPythonSSLExit()
credentials.user_agent = GAM_INFO credentials.user_agent = GAM_INFO
http = credentials.authorize(httplib2.Http(disable_ssl_certificate_validation=GC_Values[GC_NO_VERIFY_SSL], cache=None)) http = credentials.authorize(httplib2.Http(disable_ssl_certificate_validation=GC_Values[GC_NO_VERIFY_SSL], cache=None))
return (googleapiclient.discovery.build(u'cloudresourcemanager', u'v1', http=http, cache_discovery=False), http) discoveryServiceUrl = googleapiclient.discovery.V2_DISCOVERY_URI
return (googleapiclient.discovery.build(u'cloudresourcemanager', u'v1',
http=http, cache_discovery=False, discoveryServiceUrl=discoveryServiceUrl),
http)
def getGAMProjectAPIs(): def getGAMProjectAPIs():
httpObj = httplib2.Http(disable_ssl_certificate_validation=GC_Values[GC_NO_VERIFY_SSL]) httpObj = httplib2.Http(disable_ssl_certificate_validation=GC_Values[GC_NO_VERIFY_SSL])
@ -7259,7 +7227,10 @@ def getGAMProjectAPIs():
def enableGAMProjectAPIs(GAMProjectAPIs, httpObj, projectId, checkEnabled, i=0, count=0): def enableGAMProjectAPIs(GAMProjectAPIs, httpObj, projectId, checkEnabled, i=0, count=0):
apis = GAMProjectAPIs[:] apis = GAMProjectAPIs[:]
project_name = u'project:{0}'.format(projectId) project_name = u'project:{0}'.format(projectId)
serveman = googleapiclient.discovery.build(u'servicemanagement', u'v1', http=httpObj, cache_discovery=False) discoveryServiceUrl = googleapiclient.discovery.V2_DISCOVERY_URI
serveman = googleapiclient.discovery.build(u'servicemanagement', u'v1',
http=httpObj, cache_discovery=False,
discoveryServiceUrl=discoveryServiceUrl)
status = True status = True
if checkEnabled: if checkEnabled:
try: try:
@ -13360,8 +13331,6 @@ def ProcessGAMCommand(args):
printShowSmime(users, False) printShowSmime(users, False)
elif showWhat == u'gmailprofile': elif showWhat == u'gmailprofile':
showGmailProfile(users) showGmailProfile(users)
elif showWhat == u'gplusprofile':
showGplusProfile(users)
elif showWhat in [u'sig', u'signature']: elif showWhat in [u'sig', u'signature']:
getSignature(users) getSignature(users)
elif showWhat == u'forward': elif showWhat == u'forward':

View File

@ -97,6 +97,21 @@ SKUS = {
u'product': u'Google-Chrome-Device-Management', u'aliases': [u'chrome', u'cdm', u'googlechromedevicemanagement'], u'displayName': u'Google Chrome Device Management'} u'product': u'Google-Chrome-Device-Management', u'aliases': [u'chrome', u'cdm', u'googlechromedevicemanagement'], u'displayName': u'Google Chrome Device Management'}
} }
# Legacy APIs that use v1 discovery. Newer APIs should all use v2.
V1_DISCOVERY_APIS = {
u'oauth2',
u'reseller',
u'storage',
u'drive',
u'admin',
u'groupssettings',
u'licensing',
u'calendar',
u'appsactivity',
u'siteVerification',
u'gmail',
}
API_VER_MAPPING = { API_VER_MAPPING = {
u'alertcenter': u'v1beta1', u'alertcenter': u'v1beta1',
u'appsactivity': u'v1', u'appsactivity': u'v1',
@ -111,7 +126,6 @@ API_VER_MAPPING = {
u'groupssettings': u'v1', u'groupssettings': u'v1',
u'licensing': u'v1', u'licensing': u'v1',
u'oauth2': u'v2', u'oauth2': u'v2',
u'plus': u'v1',
u'pubsub': u'v1', u'pubsub': u'v1',
u'reports': u'reports_v1', u'reports': u'reports_v1',
u'reseller': u'v1', u'reseller': u'v1',
@ -132,7 +146,6 @@ API_SCOPE_MAPPING = {
u'gmail': [u'https://mail.google.com/', u'gmail': [u'https://mail.google.com/',
u'https://www.googleapis.com/auth/gmail.settings.basic', u'https://www.googleapis.com/auth/gmail.settings.basic',
u'https://www.googleapis.com/auth/gmail.settings.sharing',], u'https://www.googleapis.com/auth/gmail.settings.sharing',],
u'plus': [u'https://www.googleapis.com/auth/plus.me',],
u'sheets': [u'https://www.googleapis.com/auth/spreadsheets',], u'sheets': [u'https://www.googleapis.com/auth/spreadsheets',],
} }
@ -166,9 +179,6 @@ SERVICE_NAME_CHOICES_MAP = {
u'googledrive': u'Drive and Docs', u'googledrive': u'Drive and Docs',
u'gdrive': u'Drive and Docs', u'gdrive': u'Drive and Docs',
u'calendar': u'Calendar', u'calendar': u'Calendar',
u'gplus': u'Google+',
u'google+': u'Google+',
u'googleplus': u'Google+',
} }
PRINTJOB_ASCENDINGORDER_MAP = { PRINTJOB_ASCENDINGORDER_MAP = {