From d79c28d2d306851d3517f170dfc2c6447653f79d Mon Sep 17 00:00:00 2001 From: Ross Scroggs Date: Wed, 23 Dec 2015 11:07:08 -0800 Subject: [PATCH] Eliminate unneeded service=, function=, items= in calls to API functions Saves 5.5kb! --- src/gam.py | 657 ++++++++++++++++++++++++++--------------------------- 1 file changed, 328 insertions(+), 329 deletions(-) diff --git a/src/gam.py b/src/gam.py index 79ac0562..941f9809 100755 --- a/src/gam.py +++ b/src/gam.py @@ -708,14 +708,14 @@ def callGAPI(service, function, silent_errors=False, soft_errors=False, throw_re except TypeError, e: systemErrorExit(4, e) -def callGAPIpages(service, function, items=u'items', nextPageToken=u'nextPageToken', page_message=None, message_attribute=None, **kwargs): +def callGAPIpages(service, function, items, page_message=None, message_attribute=None, **kwargs): pageToken = None all_pages = list() total_items = 0 while True: - this_page = callGAPI(service=service, function=function, pageToken=pageToken, **kwargs) + this_page = callGAPI(service, function, pageToken=pageToken, **kwargs) if this_page: - pageToken = this_page.get(nextPageToken) + pageToken = this_page.get(u'nextPageToken') if items in this_page: page_items = len(this_page[items]) total_items += page_items @@ -1001,7 +1001,7 @@ def showReport(): while True: try: page_message = u'Got %%num_items%% users\n' - usage = callGAPIpages(service=rep.userUsageReport(), function=u'get', items=u'usageReports', page_message=page_message, throw_reasons=[u'invalid'], + usage = callGAPIpages(rep.userUsageReport(), u'get', u'usageReports', page_message=page_message, throw_reasons=[u'invalid'], date=str(try_date), userKey=userKey, customerId=customerId, filters=filters, parameters=parameters) break except googleapiclient.errors.HttpError, e: @@ -1039,7 +1039,7 @@ def showReport(): elif report in [u'customer', u'customers', u'domain']: while True: try: - usage = callGAPIpages(service=rep.customerUsageReports(), function=u'get', items=u'usageReports', throw_reasons=[u'invalid'], + usage = callGAPIpages(rep.customerUsageReports(), u'get', u'usageReports', throw_reasons=[u'invalid'], customerId=customerId, date=str(try_date), parameters=parameters) break except googleapiclient.errors.HttpError, e: @@ -1088,7 +1088,7 @@ def showReport(): elif report == u'tokens': report = u'token' page_message = u'Got %%num_items%% items\n' - activities = callGAPIpages(service=rep.activities(), function=u'list', page_message=page_message, applicationName=report, + activities = callGAPIpages(rep.activities(), u'list', u'items', page_message=page_message, applicationName=report, userKey=userKey, customerId=customerId, actorIpAddress=actorIpAddress, startTime=startTime, endTime=endTime, eventName=eventName, filters=filters) if len(activities) > 0: @@ -1148,7 +1148,7 @@ def doDelegates(users): else: # Need to use an alias in delegator domain, first check to see if delegate already has one... cd = buildGAPIObject(u'directory') - aliases = callGAPI(service=cd.users().aliases(), function=u'list', userKey=delegate_email) + aliases = callGAPI(cd.users().aliases(), u'list', userKey=delegate_email) found_alias_in_delegator_domain = False try: for alias in aliases[u'aliases']: @@ -1164,16 +1164,16 @@ def doDelegates(users): delete_alias = True use_delegate_address = u'%s@%s' % (''.join(random.sample(u'abcdefghijklmnopqrstuvwxyz0123456789', 25)), delegator_domain) print u' Giving %s temporary alias %s for delegation' % (delegate_email, use_delegate_address) - callGAPI(service=cd.users().aliases(), function=u'insert', userKey=delegate_email, body={u'alias': use_delegate_address}) + callGAPI(cd.users().aliases(), u'insert', userKey=delegate_email, body={u'alias': use_delegate_address}) time.sleep(5) retries = 10 for n in range(1, retries+1): try: - callGData(service=emailsettings, function=u'CreateDelegate', throw_errors=[600, 1000, 1001], delegate=use_delegate_address, delegator=delegator) + callGData(emailsettings, u'CreateDelegate', throw_errors=[600, 1000, 1001], delegate=use_delegate_address, delegator=delegator) break except gdata.apps.service.AppsForYourDomainException, e: # 1st check to see if delegation already exists (causes 1000 error on create when using alias) - get_delegates = callGData(service=emailsettings, function=u'GetDelegates', delegator=delegator) + get_delegates = callGData(emailsettings, u'GetDelegates', delegator=delegator) for get_delegate in get_delegates: if get_delegate[u'address'].lower() == delegate_email: # Delegation is already in place print u'That delegation is already in place...' @@ -1183,8 +1183,8 @@ def doDelegates(users): sys.exit(0) # Emulate functionality of duplicate delegation between users in same domain, returning clean # Now check if either user account is suspended or requires password change cd = buildGAPIObject(u'directory') - delegate_user_details = callGAPI(service=cd.users(), function=u'get', userKey=delegate_email) - delegator_user_details = callGAPI(service=cd.users(), function=u'get', userKey=delegator_email) + delegate_user_details = callGAPI(cd.users(), u'get', userKey=delegate_email) + delegator_user_details = callGAPI(cd.users(), u'get', userKey=delegator_email) if delegate_user_details[u'suspended'] == True: sys.stderr.write(u'ERROR: User %s is suspended. You must unsuspend for delegation.\n' % delegate_email) if delete_alias: @@ -1244,7 +1244,7 @@ def getDelegates(users): else: emailsettings.domain = GC_Values[GC_DOMAIN] sys.stderr.write(u"Getting delegates for %s...\n" % (user + '@' + emailsettings.domain)) - delegates = callGData(service=emailsettings, function=u'GetDelegates', soft_errors=True, delegator=user) + delegates = callGData(emailsettings, u'GetDelegates', soft_errors=True, delegator=user) try: for delegate in delegates: if csv_format: @@ -1273,7 +1273,7 @@ def deleteDelegate(users): emailsettings.domain = GC_Values[GC_DOMAIN] #make sure it's back at default domain print u"Deleting %s delegate access to %s (%s of %s)" % (delegate, user+u'@'+emailsettings.domain, i, count) i += 1 - callGData(service=emailsettings, function=u'DeleteDelegate', delegate=delegate, delegator=user) + callGData(emailsettings, u'DeleteDelegate', delegate=delegate, delegator=user) def doAddCourseParticipant(): croom = buildGAPIObject(u'classroom') @@ -1296,7 +1296,7 @@ def doAddCourseParticipant(): print u'ERROR: %s is not a valid argument to "gam course ID add"' % participant_type sys.exit(2) body = {body_attribute: new_id} - callGAPI(service=service, function=u'create', courseId=courseId, body=body) + callGAPI(service, u'create', courseId=courseId, body=body) if courseId[:2] == u'd:': courseId = courseId[2:] if new_id[:2] == u'd:': @@ -1325,7 +1325,7 @@ def doSyncCourseParticipants(): gam_commands.append([u'course', courseId, u'add', participant_type, add_email]) for remove_email in to_remove: gam_commands.append([u'course', courseId, u'remove', participant_type, remove_email]) - run_batch(items=gam_commands) + run_batch(gam_commands) def doDelCourseParticipant(): croom = buildGAPIObject(u'classroom') @@ -1349,7 +1349,7 @@ def doDelCourseParticipant(): else: print u'ERROR: %s is not a valid argument to "gam course ID delete"' % participant_type sys.exit(2) - callGAPI(service=service, function=u'delete', courseId=courseId, **kwargs) + callGAPI(service, u'delete', courseId=courseId, **kwargs) if courseId[:2] == u'd:': courseId = courseId[2:] if remove_id[:2] == u'd:': @@ -1361,7 +1361,7 @@ def doDelCourse(): courseId = sys.argv[3] if not courseId.isdigit(): courseId = u'd:%s' % courseId - callGAPI(service=croom.courses(), function=u'delete', id=courseId) + callGAPI(croom.courses(), u'delete', id=courseId) print u'Deleted Course %s' % courseId def doUpdateCourse(): @@ -1398,14 +1398,14 @@ def doUpdateCourse(): sys.exit(2) updateMask = u','.join(body.keys()) body[u'id'] = courseId - result = callGAPI(service=croom.courses(), function=u'patch', id=courseId, body=body, updateMask=updateMask) + result = callGAPI(croom.courses(), u'patch', id=courseId, body=body, updateMask=updateMask) print u'Updated Course %s' % result[u'id'] def doCreateDomain(): cd = buildGAPIObject(u'directory') domain_name = sys.argv[3] body = {u'domainName': domain_name} - callGAPI(service=cd.domains(), function=u'insert', customer=GC_Values[GC_CUSTOMER_ID], body=body) + callGAPI(cd.domains(), u'insert', customer=GC_Values[GC_CUSTOMER_ID], body=body) print u'Added domain %s' % domain_name def doCreateDomainAlias(): @@ -1413,7 +1413,7 @@ def doCreateDomainAlias(): body = {} body[u'domainAliasName'] = sys.argv[3] body[u'parentDomainName'] = sys.argv[4] - callGAPI(service=cd.domainAliases(), function=u'insert', customer=GC_Values[GC_CUSTOMER_ID], body=body) + callGAPI(cd.domainAliases(), u'insert', customer=GC_Values[GC_CUSTOMER_ID], body=body) def doUpdateDomain(): cd = buildGAPIObject(u'directory') @@ -1427,7 +1427,7 @@ def doUpdateDomain(): else: print u'ERROR: %s is not a valid argument for "gam update domain"' % sys.argv[i] sys.exit(2) - callGAPI(service=cd.customers(), function=u'update', customerKey=GC_Values[GC_CUSTOMER_ID], body=body) + callGAPI(cd.customers(), u'update', customerKey=GC_Values[GC_CUSTOMER_ID], body=body) print u'%s is now the primary domain.' % domain_name def doGetDomainInfo(): @@ -1436,7 +1436,7 @@ def doGetDomainInfo(): return cd = buildGAPIObject(u'directory') domainName = sys.argv[3] - result = callGAPI(service=cd.domains(), function=u'get', customer=GC_Values[GC_CUSTOMER_ID], domainName=domainName) + result = callGAPI(cd.domains(), u'get', customer=GC_Values[GC_CUSTOMER_ID], domainName=domainName) if u'creationTime' in result: result[u'creationTime'] = unicode(datetime.datetime.fromtimestamp(int(result[u'creationTime'])/1000)) if u'domainAliases' in result: @@ -1448,14 +1448,14 @@ def doGetDomainInfo(): def doGetDomainAliasInfo(): cd = buildGAPIObject(u'directory') alias = sys.argv[3] - result = callGAPI(service=cd.domainAliases(), function=u'get', customer=GC_Values[GC_CUSTOMER_ID], domainAliasName=alias) + result = callGAPI(cd.domainAliases(), u'get', customer=GC_Values[GC_CUSTOMER_ID], domainAliasName=alias) if u'creationTime' in result: result[u'creationTime'] = unicode(datetime.datetime.fromtimestamp(int(result[u'creationTime'])/1000)) print_json(None, result) def doGetCustomerInfo(): cd = buildGAPIObject(u'directory') - customer_info = callGAPI(service=cd.customers(), function=u'get', customerKey=GC_Values[GC_CUSTOMER_ID]) + customer_info = callGAPI(cd.customers(), u'get', customerKey=GC_Values[GC_CUSTOMER_ID]) print_json(None, customer_info) def doUpdateCustomer(): @@ -1495,25 +1495,25 @@ def doUpdateCustomer(): else: print u'ERROR: %s is not a valid argument for "gam update customer"' % myarg sys.exit(2) - callGAPI(service=cd.customers(), function=u'update', customerKey=GC_Values[GC_CUSTOMER_ID], body=body) + callGAPI(cd.customers(), u'update', customerKey=GC_Values[GC_CUSTOMER_ID], body=body) print u'Updated customer' def doDelDomain(): cd = buildGAPIObject(u'directory') domainName = sys.argv[3] - callGAPI(service=cd.domains(), function=u'delete', customer=GC_Values[GC_CUSTOMER_ID], domainName=domainName) + callGAPI(cd.domains(), u'delete', customer=GC_Values[GC_CUSTOMER_ID], domainName=domainName) def doDelDomainAlias(): cd = buildGAPIObject(u'directory') domainAliasName = sys.argv[3] - callGAPI(service=cd.domainAliases(), function=u'delete', customer=GC_Values[GC_CUSTOMER_ID], domainAliasName=domainAliasName) + callGAPI(cd.domainAliases(), u'delete', customer=GC_Values[GC_CUSTOMER_ID], domainAliasName=domainAliasName) def doPrintDomains(): cd = buildGAPIObject(u'directory') titles = [] domains_attributes = [{}] todrive = False - domains = callGAPI(service=cd.domains(), function=u'list', customer=GC_Values[GC_CUSTOMER_ID]) + domains = callGAPI(cd.domains(), u'list', customer=GC_Values[GC_CUSTOMER_ID]) i = 3 while i < len(sys.argv): if sys.argv[i].lower() == u'todrive': @@ -1560,7 +1560,7 @@ def doDelAdmin(): cd = buildGAPIObject(u'directory') roleAssignmentId = sys.argv[3] print u'Deleting Admin Role Assignment %s' % roleAssignmentId - callGAPI(service=cd.roleAssignments(), function=u'delete', + callGAPI(cd.roleAssignments(), u'delete', customer=GC_Values[GC_CUSTOMER_ID], roleAssignmentId=roleAssignmentId) def doCreateAdmin(): @@ -1571,7 +1571,7 @@ def doCreateAdmin(): body[u'assignedTo'] = user[4:] else: print user[:3] - body[u'assignedTo'] = callGAPI(service=cd.users(), function=u'get', + body[u'assignedTo'] = callGAPI(cd.users(), u'get', userKey=user, projection=u'basic', fields=u'id')[u'id'] role = sys.argv[4] if role[:4].lower() == u'uid:': @@ -1594,7 +1594,7 @@ def doCreateAdmin(): else: if orgUnit[0] == u'/': orgUnit = orgUnit[1:] - body[u'orgUnitId'] = callGAPI(service=cd.orgunits(), function=u'get', + body[u'orgUnitId'] = callGAPI(cd.orgunits(), u'get', customerId=GC_Values[GC_CUSTOMER_ID], orgUnitPath=orgUnit, fields=u'orgUnitId')[u'orgUnitId'][3:] if body[u'scopeType'] == u'CUSTOMER': @@ -1602,20 +1602,20 @@ def doCreateAdmin(): else: scope = orgUnit print u'Giving %s admin role %s for %s' % (user, role, scope) - callGAPI(service=cd.roleAssignments(), function=u'insert', + callGAPI(cd.roleAssignments(), u'insert', customer=GC_Values[GC_CUSTOMER_ID], body=body) def doPrintAdminRoles(): cd = buildGAPIObject(u'directory') - roles = callGAPIpages(service=cd.roles(), function=u'list', items=u'items', - customer=GC_Values[GC_CUSTOMER_ID]) + roles = callGAPIpages(cd.roles(), u'list', u'items', + customer=GC_Values[GC_CUSTOMER_ID]) roles_attrib = [{}] for role in roles: role_attrib = {} for key, value in role.items(): if key in [u'kind', u'etag', u'etags']: continue - if not isinstance( value, (str, unicode, bool)): + if not isinstance(value, (str, unicode, bool)): continue if key not in roles_attrib[0]: roles_attrib[0][key] = key @@ -1649,7 +1649,7 @@ def doPrintAdmins(): else: print u'ERROR: %s is not a valid argument for "gam print admins".' % sys.argv[i] sys.exit(2) - admins = callGAPIpages(service=cd.roleAssignments(), function=u'list', + admins = callGAPIpages(cd.roleAssignments(), u'list', u'items', customer=GC_Values[GC_CUSTOMER_ID], userKey=userKey, roleId=roleId, maxResults=200) admins_attrib = [{}] for admin in admins: @@ -1680,7 +1680,7 @@ def doPrintAdmins(): def buildOrgUnitIdToNameMap(): cd = buildGAPIObject(u'directory') - result = callGAPI(service=cd.orgunits(), function=u'list', + result = callGAPI(cd.orgunits(), u'list', customerId=GC_Values[GC_CUSTOMER_ID], fields=u'organizationUnits(orgUnitPath,orgUnitId)') GM_Globals[GM_MAP_ORGUNIT_ID_TO_NAME] = {} @@ -1694,7 +1694,7 @@ def orgunit_from_orgunitid(orgunitid): def buildRoleIdToNameToIdMap(): cd = buildGAPIObject(u'directory') - result = callGAPIpages(service=cd.roles(), function=u'list', items=u'items', + result = callGAPIpages(cd.roles(), u'list', u'items', customer=GC_Values[GC_CUSTOMER_ID], fields=u'nextPageToken,items(roleId,roleName)', maxResults=100) @@ -1716,7 +1716,7 @@ def roleid_from_role(role): def buildUserIdToNameMap(): cd = buildGAPIObject(u'directory') - result = callGAPIpages(service=cd.users(), function=u'list', items=u'users', + result = callGAPIpages(cd.users(), u'list', u'users', customer=GC_Values[GC_CUSTOMER_ID], fields=u'nextPageToken,users(id,primaryEmail)', maxResults=GC_Values[GC_USER_MAX_RESULTS]) @@ -1738,7 +1738,7 @@ def appID2app(dt, appID): for serviceName, serviceID in SERVICE_NAME_TO_ID_MAP.items(): if appID == serviceID: return serviceName - online_services = callGAPIpages(service=dt.applications(), function=u'list', items=u'applications', customerId=GC_Values[GC_CUSTOMER_ID]) + online_services = callGAPIpages(dt.applications(), u'list', u'applications', customerId=GC_Values[GC_CUSTOMER_ID]) for online_service in online_services: if appID == online_service[u'id']: return online_service[u'name'] @@ -1757,7 +1757,7 @@ def app2appID(dt, app): serviceName = app.lower() if serviceName in SERVICE_NAME_CHOICES_MAP: return (SERVICE_NAME_CHOICES_MAP[serviceName], SERVICE_NAME_TO_ID_MAP[SERVICE_NAME_CHOICES_MAP[serviceName]]) - online_services = callGAPIpages(service=dt.applications(), function=u'list', items=u'applications', customerId=GC_Values[GC_CUSTOMER_ID]) + online_services = callGAPIpages(dt.applications(), u'list', u'applications', customerId=GC_Values[GC_CUSTOMER_ID]) for online_service in online_services: if serviceName == online_service[u'name'].lower(): return online_service[u'id'] @@ -1771,7 +1771,7 @@ def convertToUserID(user): if user.find(u'@') == -1: user = u'%s@%s' % (user, GC_Values[GC_DOMAIN]) try: - return callGAPI(service=cd.users(), function=u'get', throw_reasons=[u'notFound'], userKey=user, fields=u'id')[u'id'] + return callGAPI(cd.users(), u'get', throw_reasons=[u'notFound'], userKey=user, fields=u'id')[u'id'] except googleapiclient.errors.HttpError: print u'ERROR: no such user %s' % user sys.exit(3) @@ -1779,7 +1779,7 @@ def convertToUserID(user): def convertUserIDtoEmail(uid): cd = buildGAPIObject(u'directory') try: - return callGAPI(service=cd.users(), function=u'get', throw_reasons=[u'notFound'], userKey=uid, fields=u'primaryEmail')[u'primaryEmail'] + return callGAPI(cd.users(), u'get', throw_reasons=[u'notFound'], userKey=uid, fields=u'primaryEmail')[u'primaryEmail'] except googleapiclient.errors.HttpError: print u'ERROR: no such user %s' % id sys.exit(3) @@ -1802,12 +1802,12 @@ def doCreateDataTranfer(): if u'applicationDataTransferParams' not in body[u'applicationDataTransfers'][0]: body[u'applicationDataTransfers'][0][u'applicationTransferParams'] = [] body[u'applicationDataTransfers'][0][u'applicationTransferParams'].append({u'key': key, u'value': parameters[key]}) - result = callGAPI(service=dt.transfers(), function=u'insert', body=body, fields=u'id')[u'id'] + result = callGAPI(dt.transfers(), u'insert', body=body, fields=u'id')[u'id'] print u'Submitted request id %s to transfer %s from %s to %s' % (result, service, old_owner, new_owner) def doPrintTransferApps(): dt = buildGAPIObject(u'datatransfer') - apps = callGAPIpages(service=dt.applications(), function=u'list', items=u'applications', customerId=GC_Values[GC_CUSTOMER_ID]) + apps = callGAPIpages(dt.applications(), u'list', u'applications', customerId=GC_Values[GC_CUSTOMER_ID]) for app in apps: print_json(None, app) print @@ -1836,8 +1836,8 @@ def doPrintDataTransfers(): print u'ERROR: %s is not a valid argument for "gam print transfers"' % sys.argv[i] sys.exit(2) transfers_attributes = [{}] - transfers = callGAPIpages(service=dt.transfers(), function=u'list', - items=u'dataTransfers', customerId=GC_Values[GC_CUSTOMER_ID], status=status, + transfers = callGAPIpages(dt.transfers(), u'list', u'items', + u'dataTransfers', customerId=GC_Values[GC_CUSTOMER_ID], status=status, newOwnerUserId=newOwnerUserId, oldOwnerUserId=oldOwnerUserId) for transfer in transfers: for i in range(0, len(transfer[u'applicationDataTransfers'])): @@ -1861,7 +1861,7 @@ def doPrintDataTransfers(): def doGetDataTransferInfo(): dt = buildGAPIObject(u'datatransfer') dtId = sys.argv[3] - transfer = callGAPI(service=dt.transfers(), function=u'get', dataTransferId=dtId) + transfer = callGAPI(dt.transfers(), u'get', dataTransferId=dtId) print u'Old Owner: %s' % convertUserIDtoEmail(transfer[u'oldOwnerUserId']) print u'New Owner: %s' % convertUserIDtoEmail(transfer[u'newOwnerUserId']) print u'Request Time: %s' % transfer[u'requestTime'] @@ -1915,7 +1915,7 @@ def doCreateCourse(): body['ownerId'] = u'me' if not u'name' in body: body['name'] = u'Unknown Course' - result = callGAPI(service=croom.courses(), function=u'create', body=body) + result = callGAPI(croom.courses(), u'create', body=body) print u'Created course %s' % result[u'id'] def doGetCourseInfo(): @@ -1923,12 +1923,12 @@ def doGetCourseInfo(): courseId = sys.argv[3] if not courseId.isdigit(): courseId = u'd:%s' % courseId - info = callGAPI(service=croom.courses(), function=u'get', id=courseId) + info = callGAPI(croom.courses(), u'get', id=courseId) print_json(None, info) - teachers = callGAPIpages(service=croom.courses().teachers(), function=u'list', items=u'teachers', courseId=courseId) - students = callGAPIpages(service=croom.courses().students(), function=u'list', items=u'students', courseId=courseId) + teachers = callGAPIpages(croom.courses().teachers(), u'list', u'teachers', courseId=courseId) + students = callGAPIpages(croom.courses().students(), u'list', u'students', courseId=courseId) try: - aliases = callGAPIpages(service=croom.courses().aliases(), function=u'list', items=u'aliases', throw_reasons=[u'notImplemented'], courseId=courseId) + aliases = callGAPIpages(croom.courses().aliases(), u'list', u'aliases', throw_reasons=[u'notImplemented'], courseId=courseId) except googleapiclient.errors.HttpError: aliases = [] if aliases: @@ -1976,7 +1976,7 @@ def doPrintCourses(): sys.exit(2) sys.stderr.write(u'Retrieving courses for organization (may take some time for large accounts)...\n') page_message = u'Got %%num_items%% courses...\n' - all_courses = callGAPIpages(service=croom.courses(), function=u'list', items=u'courses', page_message=page_message, teacherId=teacherId, studentId=studentId) + all_courses = callGAPIpages(croom.courses(), u'list', u'courses', page_message=page_message, teacherId=teacherId, studentId=studentId) for course in all_courses: croom_attributes.append(flatten_json(course)) for item in croom_attributes[-1]: @@ -1990,7 +1990,7 @@ def doPrintCourses(): i = 1 for course in croom_attributes[1:]: sys.stderr.write('Getting aliases for course %s (%s/%s)\n' % (course[u'id'], i, num_courses)) - course_aliases = callGAPIpages(service=croom.courses().aliases(), function=u'list', items=u'aliases', courseId=course[u'id']) + course_aliases = callGAPIpages(croom.courses().aliases(), u'list', u'aliases', courseId=course[u'id']) my_aliases = [] for alias in course_aliases: my_aliases.append(alias[u'alias'][2:]) @@ -2029,21 +2029,21 @@ def doPrintCourseParticipants(): sys.stderr.write(u'Retrieving courses for organization (may take some time for large accounts)...\n') if len(courses) == 0: page_message = u'Got %%num_items%% courses...\n' - all_courses = callGAPIpages(service=croom.courses(), function=u'list', items=u'courses', page_message=page_message, teacherId=teacherId, studentId=studentId) + all_courses = callGAPIpages(croom.courses(), u'list', u'courses', page_message=page_message, teacherId=teacherId, studentId=studentId) for course in all_courses: courses.append(course[u'id']) else: all_courses = [] for course in courses: - all_courses.append(callGAPI(service=croom.courses(), function=u'get', id=course)) + all_courses.append(callGAPI(croom.courses(), u'get', id=course)) y = 1 num_courses = len(all_courses) for course in all_courses: course_id = course[u'id'] teacher_message = u' got %%%%num_items%%%% teachers for course %s (%s/%s)' % (course_id, y, num_courses) student_message = u' got %%%%num_items%%%% students for course %s (%s/%s)' % (course_id, y, num_courses) - teachers = callGAPIpages(service=croom.courses().teachers(), function=u'list', items=u'teachers', page_message=teacher_message, courseId=course_id) - students = callGAPIpages(service=croom.courses().students(), function=u'list', items=u'students', page_message=student_message, courseId=course_id) + teachers = callGAPIpages(croom.courses().teachers(), u'list', u'teachers', page_message=teacher_message, courseId=course_id) + students = callGAPIpages(croom.courses().students(), u'list', u'students', page_message=student_message, courseId=course_id) for teacher in teachers: participant = flatten_json(teacher) participant[u'courseId'] = course_id @@ -2146,7 +2146,7 @@ def doPrintPrintJobs(): sys.exit(2) if sortorder and descending: sortorder = PRINTJOB_DESCENDINGORDER_MAP[sortorder] - jobs = callGAPI(service=cp.jobs(), function=u'list', q=query, status=status, sortorder=sortorder, printerid=printerid, owner=owner) + jobs = callGAPI(cp.jobs(), u'list', q=query, status=status, sortorder=sortorder, printerid=printerid, owner=owner) checkCloudPrintResult(jobs) for job in jobs[u'jobs']: createTime = int(job[u'createTime'])/1000 @@ -2195,7 +2195,7 @@ def doPrintPrinters(): else: print u'ERROR: %s is not a valid argument for "gam print printers"' % sys.argv[i] sys.exit(2) - printers = callGAPI(service=cp.printers(), function=u'list', q=query, type=printer_type, connection_status=connection_status, extra_fields=extra_fields) + printers = callGAPI(cp.printers(), u'list', q=query, type=printer_type, connection_status=connection_status, extra_fields=extra_fields) checkCloudPrintResult(printers) for printer in printers[u'printers']: createTime = int(printer[u'createTime'])/1000 @@ -2248,7 +2248,7 @@ def changeCalendarAttendees(users): cal = buildGAPIServiceObject(u'calendar', user) page_token = None while True: - events_page = callGAPI(service=cal.events(), function=u'list', calendarId=user, pageToken=page_token, timeMin=start_date, timeMax=end_date, showDeleted=False, showHiddenInvitations=False) + events_page = callGAPI(cal.events(), u'list', calendarId=user, pageToken=page_token, timeMin=start_date, timeMax=end_date, showDeleted=False, showHiddenInvitations=False) print u'Got %s items' % len(events_page.get(u'items', [])) for event in events_page.get(u'items', []): if event[u'status'] == u'cancelled': @@ -2284,7 +2284,7 @@ def changeCalendarAttendees(users): body[u'attendees'] = event[u'attendees'] print u'UPDATING %s' % event_summary if do_it: - callGAPI(service=cal.events(), function=u'patch', calendarId=user, eventId=event[u'id'], sendNotifications=False, body=body) + callGAPI(cal.events(), u'patch', calendarId=user, eventId=event[u'id'], sendNotifications=False, body=body) else: print u' not pulling the trigger.' #else: @@ -2303,7 +2303,7 @@ def deleteCalendar(users): if user.find(u'@') == -1: user = u'%s@%s' % (user, GC_Values[GC_DOMAIN]) cal = buildGAPIServiceObject(u'calendar', user) - callGAPI(service=cal.calendarList(), function=u'delete', calendarId=calendarId) + callGAPI(cal.calendarList(), u'delete', calendarId=calendarId) def addCalendar(users): cal = buildGAPIServiceObject(u'calendar', users[0]) @@ -2371,7 +2371,7 @@ def addCalendar(users): user = u'%s@%s' % (user, GC_Values[GC_DOMAIN]) print u"Subscribing %s to %s calendar (%s of %s)" % (user, body['id'], i, count) cal = buildGAPIServiceObject(u'calendar', user) - callGAPI(service=cal.calendarList(), function=u'insert', body=body, colorRgbFormat=colorRgbFormat) + callGAPI(cal.calendarList(), u'insert', body=body, colorRgbFormat=colorRgbFormat) i += 1 def updateCalendar(users): @@ -2436,12 +2436,12 @@ def updateCalendar(users): for user in users: print u"Updating %s's subscription to calendar %s (%s of %s)" % (user, calendarId, i, count) cal = buildGAPIServiceObject(u'calendar', user) - callGAPI(service=cal.calendarList(), function=u'update', calendarId=calendarId, body=body, colorRgbFormat=colorRgbFormat) + callGAPI(cal.calendarList(), u'update', calendarId=calendarId, body=body, colorRgbFormat=colorRgbFormat) def doPrinterShowACL(): cp = buildGAPIObject(u'cloudprint') show_printer = sys.argv[2] - printer_info = callGAPI(service=cp.printers(), function=u'get', printerid=show_printer) + printer_info = callGAPI(cp.printers(), u'get', printerid=show_printer) checkCloudPrintResult(printer_info) for acl in printer_info[u'printers'][0][u'access']: if u'key' in acl: @@ -2463,7 +2463,7 @@ def doPrinterAddACL(): skip_notification = None elif scope.find(u'@') == -1: scope = u'/hd/domain/%s' % scope - result = callGAPI(service=cp.printers(), function=u'share', printerid=printer, role=role, scope=scope, public=public, skip_notification=skip_notification) + result = callGAPI(cp.printers(), u'share', printerid=printer, role=role, scope=scope, public=public, skip_notification=skip_notification) checkCloudPrintResult(result) who = scope if who == None: @@ -2481,7 +2481,7 @@ def doPrinterDelACL(): scope = None elif scope.find(u'@') == -1: scope = u'/hd/domain/%s' % scope - result = callGAPI(service=cp.printers(), function=u'unshare', printerid=printer, scope=scope, public=public) + result = callGAPI(cp.printers(), u'unshare', printerid=printer, scope=scope, public=public) checkCloudPrintResult(result) who = scope if who == None: @@ -2587,7 +2587,7 @@ def doPrintJobFetch(): sys.exit(2) if sortorder and descending: sortorder = PRINTJOB_DESCENDINGORDER_MAP[sortorder] - result = callGAPI(service=cp.jobs(), function=u'list', q=query, status=status, sortorder=sortorder, printerid=printerid, owner=owner) + result = callGAPI(cp.jobs(), u'list', q=query, status=status, sortorder=sortorder, printerid=printerid, owner=owner) if u'errorCode' in result and result[u'errorCode'] == 413: print u'No print jobs.' sys.exit(0) @@ -2610,15 +2610,15 @@ def doPrintJobFetch(): fileName = u'%s-%s' % (fileName, jobid) _, content = cp._http.request(uri=fileUrl, method='GET') if writeFile(fileName, content, continueOnError=True): -# ticket = callGAPI(service=cp.jobs(), function=u'getticket', jobid=jobid, use_cjt=True) - result = callGAPI(service=cp.jobs(), function=u'update', jobid=jobid, semantic_state_diff=ssd) +# ticket = callGAPI(cp.jobs(), u'getticket', jobid=jobid, use_cjt=True) + result = callGAPI(cp.jobs(), u'update', jobid=jobid, semantic_state_diff=ssd) checkCloudPrintResult(result) print u'Printed job %s to %s' % (jobid, fileName) def doDelPrinter(): cp = buildGAPIObject(u'cloudprint') printerid = sys.argv[3] - result = callGAPI(service=cp.printers(), function=u'delete', printerid=printerid) + result = callGAPI(cp.printers(), u'delete', printerid=printerid) checkCloudPrintResult(result) def doGetPrinterInfo(): @@ -2633,7 +2633,7 @@ def doGetPrinterInfo(): else: print u'ERROR: %s is not a valid argument for "gam info printer"' % sys.argv[i] sys.exit(2) - result = callGAPI(service=cp.printers(), function=u'get', printerid=printerid) + result = callGAPI(cp.printers(), u'get', printerid=printerid) checkCloudPrintResult(result) printer_info = result[u'printers'][0] createTime = int(printer_info[u'createTime'])/1000 @@ -2669,7 +2669,7 @@ def doUpdatePrinter(): if not arg_in_item: print u'ERROR: %s is not a valid argument for "gam update printer"' % sys.argv[i] sys.exit(2) - result = callGAPI(service=cp.printers(), function=u'update', printerid=printerid, **kwargs) + result = callGAPI(cp.printers(), u'update', printerid=printerid, **kwargs) checkCloudPrintResult(result) print u'Updated printer %s' % printerid @@ -2705,7 +2705,7 @@ def doPrinterRegister(): form_files = {} body, headers = encode_multipart(form_fields, form_files) #Get the printer first to make sure our OAuth access token is fresh - callGAPI(service=cp.printers(), function=u'list') + callGAPI(cp.printers(), u'list') _, result = cp._http.request(uri='https://www.google.com/cloudprint/register', method='POST', body=body, headers=headers) result = json.loads(result) checkCloudPrintResult(result) @@ -2718,10 +2718,10 @@ def doPrintJobResubmit(): ssd = '''{ "state": {"type": "HELD"} }''' - result = callGAPI(service=cp.jobs(), function=u'update', jobid=jobid, semantic_state_diff=ssd) + result = callGAPI(cp.jobs(), u'update', jobid=jobid, semantic_state_diff=ssd) checkCloudPrintResult(result) - ticket = callGAPI(service=cp.jobs(), function=u'getticket', jobid=jobid, use_cjt=True) - result = callGAPI(service=cp.jobs(), function=u'resubmit', printerid=printerid, jobid=jobid, ticket=ticket) + ticket = callGAPI(cp.jobs(), u'getticket', jobid=jobid, use_cjt=True) + result = callGAPI(cp.jobs(), u'resubmit', printerid=printerid, jobid=jobid, ticket=ticket) checkCloudPrintResult(result) print u'Success resubmitting %s as job %s to printer %s' % (jobid, result[u'job'][u'id'], printerid) @@ -2756,10 +2756,10 @@ def doPrintJobSubmit(): mimetype = u'application/octet-stream' filecontent = readFile(filepath) form_files[u'content'] = {u'filename': content, u'content': filecontent, u'mimetype': mimetype} - #result = callGAPI(service=cp.printers(), function=u'submit', body=body) + #result = callGAPI(cp.printers(), u'submit', body=body) body, headers = encode_multipart(form_fields, form_files) #Get the printer first to make sure our OAuth access token is fresh - callGAPI(service=cp.printers(), function=u'get', printerid=printer) + callGAPI(cp.printers(), u'get', printerid=printer) _, result = cp._http.request(uri='https://www.google.com/cloudprint/submit', method='POST', body=body, headers=headers) checkCloudPrintResult(result) if type(result) is str: @@ -2769,7 +2769,7 @@ def doPrintJobSubmit(): def doDeletePrintJob(): cp = buildGAPIObject(u'cloudprint') job = sys.argv[2] - result = callGAPI(service=cp.jobs(), function=u'delete', jobid=job) + result = callGAPI(cp.jobs(), u'delete', jobid=job) checkCloudPrintResult(result) print u'Print Job %s deleted' % job @@ -2777,7 +2777,7 @@ def doCancelPrintJob(): cp = buildGAPIObject(u'cloudprint') job = sys.argv[2] ssd = '{"state": {"type": "ABORTED", "user_action_cause": {"action_code": "CANCELLED"}}}' - result = callGAPI(service=cp.jobs(), function=u'update', jobid=job, semantic_state_diff=ssd) + result = callGAPI(cp.jobs(), u'update', jobid=job, semantic_state_diff=ssd) checkCloudPrintResult(result) print u'Print Job %s cancelled' % job @@ -2797,7 +2797,7 @@ def doCalendarShowACL(): show_cal = sys.argv[2] if show_cal.find(u'@') == -1: show_cal = u'%s@%s' % (show_cal, GC_Values[GC_DOMAIN]) - acls = callGAPI(service=cal.acl(), function=u'list', calendarId=show_cal) + acls = callGAPI(cal.acl(), u'list', calendarId=show_cal) try: for rule in acls[u'items']: print u' Scope %s - %s' % (rule[u'scope'][u'type'], rule[u'scope'][u'value']) @@ -2852,7 +2852,7 @@ def doCalendarAddACL(calendarId=None, act_as=None, role=None, scope=None, entity body[u'scope'][u'value'] = sys.argv[6].lower() except IndexError: body[u'scope'][u'value'] = GC_Values[GC_DOMAIN] - callGAPI(service=cal.acl(), function=u'insert', calendarId=calendarId, body=body) + callGAPI(cal.acl(), u'insert', calendarId=calendarId, body=body) def doCalendarUpdateACL(): calendarId = sys.argv[2] @@ -2880,7 +2880,7 @@ def doCalendarWipeData(): cal = buildGAPIServiceObject(u'calendar', calendarId) if calendarId.find(u'@') == -1: calendarId = u'%s@%s' % (calendarId, GC_Values[GC_DOMAIN]) - callGAPI(service=cal.calendars(), function=u'clear', calendarId=calendarId) + callGAPI(cal.calendars(), u'clear', calendarId=calendarId) def doCalendarAddEvent(): calendarId = sys.argv[2] @@ -2991,7 +2991,7 @@ def doCalendarAddEvent(): print u'ERROR: %s is not a valid argument for "gam calendar"' % sys.argv[i] sys.exit(2) if not timeZone and u'recurrence' in body: - timeZone = callGAPI(service=cal.calendars(), function=u'get', calendarId=calendarId, fields=u'timeZone')[u'timeZone'] + timeZone = callGAPI(cal.calendars(), u'get', calendarId=calendarId, fields=u'timeZone')[u'timeZone'] if u'recurrence' in body: for a_time in [u'start', u'end']: try: @@ -2999,7 +2999,7 @@ def doCalendarAddEvent(): except KeyError: pass - callGAPI(service=cal.events(), function=u'insert', calendarId=calendarId, sendNotifications=sendNotifications, body=body) + callGAPI(cal.events(), u'insert', calendarId=calendarId, sendNotifications=sendNotifications, body=body) def doProfile(users): @@ -3019,7 +3019,7 @@ def doProfile(users): elif user.find(u'@') == -1: user = u'%s@%s' % (user, GC_Values[GC_DOMAIN]) print u'Setting Profile Sharing to %s for %s (%s of %s)' % (body[u'includeInGlobalAddressList'], user, i, count) - callGAPI(service=cd.users(), function=u'patch', soft_errors=True, userKey=user, body=body) + callGAPI(cd.users(), u'patch', soft_errors=True, userKey=user, body=body) i += 1 def showProfile(users): @@ -3031,7 +3031,7 @@ def showProfile(users): user = user[4:] elif user.find(u'@') == -1: user = u'%s@%s' % (user, GC_Values[GC_DOMAIN]) - result = callGAPI(service=cd.users(), function=u'get', userKey=user, fields=u'includeInGlobalAddressList') + result = callGAPI(cd.users(), u'get', userKey=user, fields=u'includeInGlobalAddressList') try: print u'User: %s Profile Shared: %s (%s/%s)' % (user, result[u'includeInGlobalAddressList'], i, count) except IndexError: @@ -3069,7 +3069,7 @@ def doPhoto(users): continue image_data = base64.urlsafe_b64encode(image_data) body = {u'photoData': image_data} - callGAPI(service=cd.users().photos(), function=u'update', soft_errors=True, userKey=user, body=body) + callGAPI(cd.users().photos(), u'update', soft_errors=True, userKey=user, body=body) def getPhoto(users): cd = buildGAPIObject(u'directory') @@ -3084,7 +3084,7 @@ def getPhoto(users): print u"Saving photo to %s (%s/%s)" % (filename, i, count) i += 1 try: - photo = callGAPI(service=cd.users().photos(), function=u'get', throw_reasons=[u'notFound'], userKey=user) + photo = callGAPI(cd.users().photos(), u'get', throw_reasons=[u'notFound'], userKey=user) except googleapiclient.errors.HttpError: print u' no photo for %s' % user continue @@ -3107,13 +3107,13 @@ def deletePhoto(users): elif user.find('@') == -1: user = u'%s@%s' % (user, GC_Values[GC_DOMAIN]) print u"Deleting photo for %s (%s of %s)" % (user, i, count) - callGAPI(service=cd.users().photos(), function='delete', userKey=user) + callGAPI(cd.users().photos(), 'delete', userKey=user) i += 1 def showCalendars(users): for user in users: cal = buildGAPIServiceObject(u'calendar', user) - feed = callGAPI(service=cal.calendarList(), function=u'list') + feed = callGAPI(cal.calendarList(), u'list') for usercal in feed[u'items']: print u' Name: %s' % usercal['id'] print convertUTF8(u' Summary: %s' % usercal['summary']) @@ -3147,7 +3147,7 @@ def showCalSettings(users): for user in users: for user in users: cal = buildGAPIServiceObject(u'calendar', user) - feed = callGAPI(service=cal.settings(), function='list') + feed = callGAPI(cal.settings(), 'list') for setting in feed[u'items']: print u'%s: %s' % (setting[u'id'], setting[u'value']) @@ -3169,7 +3169,7 @@ def showDriveSettings(users): sys.stderr.write(u'Getting Drive settings for %s (%s of %s)\n' % (user, count, len(users))) count += 1 drive = buildGAPIServiceObject(u'drive', user) - feed = callGAPI(service=drive.about(), function=u'get', soft_errors=True) + feed = callGAPI(drive.about(), u'get', soft_errors=True) if feed == None: continue row = {u'email': user} @@ -3218,7 +3218,7 @@ def doDriveActivity(users): for user in users: activity = buildGAPIServiceObject(u'appsactivity', user) page_message = u'Retrieved %%%%total_items%%%% activities for %s' % user - feed = callGAPIpages(service=activity.activities(), function=u'list', items=u'activities', + feed = callGAPIpages(activity.activities(), u'list', u'activities', page_message=page_message, source=u'drive.google.com', userId=u'me', drive_ancestorId=drive_ancestorId, groupingStrategy=u'none', drive_fileId=drive_fileId, pageSize=GC_Values[GC_ACTIVITY_MAX_RESULTS]) @@ -3233,7 +3233,7 @@ def showDriveFileACL(users): fileId = sys.argv[5] for user in users: drive = buildGAPIServiceObject(u'drive', user) - feed = callGAPI(service=drive.permissions(), function=u'list', fileId=fileId) + feed = callGAPI(drive.permissions(), u'list', fileId=fileId) for permission in feed[u'items']: try: print permission[u'name'] @@ -3255,9 +3255,9 @@ def delDriveFileACL(users): elif permissionId.lower() in [u'anyone']: pass else: - permissionId = callGAPI(service=drive.permissions(), function=u'getIdForEmail', email=permissionId, fields=u'id')[u'id'] + permissionId = callGAPI(drive.permissions(), u'getIdForEmail', email=permissionId, fields=u'id')[u'id'] print u'Removing permission for %s from %s' % (permissionId, fileId) - callGAPI(service=drive.permissions(), function=u'delete', fileId=fileId, permissionId=permissionId) + callGAPI(drive.permissions(), u'delete', fileId=fileId, permissionId=permissionId) def addDriveFileACL(users): fileId = sys.argv[5] @@ -3298,7 +3298,7 @@ def addDriveFileACL(users): sys.exit(2) for user in users: drive = buildGAPIServiceObject(u'drive', user) - result = callGAPI(service=drive.permissions(), function=u'insert', fileId=fileId, sendNotificationEmails=sendNotificationEmails, emailMessage=emailMessage, body=body) + result = callGAPI(drive.permissions(), u'insert', fileId=fileId, sendNotificationEmails=sendNotificationEmails, emailMessage=emailMessage, body=body) print result def updateDriveFileACL(users): @@ -3336,9 +3336,9 @@ def updateDriveFileACL(users): if permissionId[:3].lower() == u'id:': permissionId = permissionId[3:] else: - permissionId = callGAPI(service=drive.permissions(), function=u'getIdForEmail', email=permissionId, fields=u'id')[u'id'] + permissionId = callGAPI(drive.permissions(), u'getIdForEmail', email=permissionId, fields=u'id')[u'id'] print u'updating permissions for %s to file %s' % (permissionId, fileId) - result = callGAPI(service=drive.permissions(), function=u'patch', fileId=fileId, permissionId=permissionId, transferOwnership=transferOwnership, body=body) + result = callGAPI(drive.permissions(), u'patch', fileId=fileId, permissionId=permissionId, transferOwnership=transferOwnership, body=body) print result def showDriveFiles(users): @@ -3431,7 +3431,7 @@ def showDriveFiles(users): sys.exit(2) sys.stderr.write(u'Getting files for %s...\n' % user) page_message = u' got %%%%total_items%%%% files for %s...\n' % user - feed = callGAPIpages(service=drive.files(), function=u'list', + feed = callGAPIpages(drive.files(), u'list', u'items', page_message=page_message, soft_errors=True, q=query, fields=fields, maxResults=GC_Values[GC_DRIVE_MAX_RESULTS]) for f_file in feed: @@ -3471,7 +3471,7 @@ def showDriveFiles(users): def doDriveSearch(drive, query=None): print u'Searching for files with query: "%s"...' % query page_message = u' got %%total_items%% files...\n' - files = callGAPIpages(service=drive.files(), function=u'list', + files = callGAPIpages(drive.files(), u'list', u'items', page_message=page_message, q=query, fields=u'nextPageToken,items(id)', maxResults=GC_Values[GC_DRIVE_MAX_RESULTS]) ids = list() @@ -3509,7 +3509,7 @@ def deleteDriveFile(users): print u'trashing %s for %s (%s of %s)' % (fileId, user, i, len(file_ids)) else: print u'purging %s for %s (%s of %s)' % (fileId, user, i, len(file_ids)) - callGAPI(service=drive.files(), function=function, fileId=fileId) + callGAPI(drive.files(), function, fileId=fileId) def printDriveFolderContents(feed, folderId, indent): for f_file in feed: @@ -3525,10 +3525,10 @@ def showDriveFileTree(users): if user.find(u'@') == -1: print u'ERROR: got %s, expected a full email address' % user sys.exit(2) - root_folder = callGAPI(service=drive.about(), function=u'get', fields=u'rootFolderId')[u'rootFolderId'] + root_folder = callGAPI(drive.about(), u'get', fields=u'rootFolderId')[u'rootFolderId'] sys.stderr.write(u'Getting all files for %s...\n' % user) page_message = u' got %%%%total_items%%%% files for %s...\n' % user - feed = callGAPIpages(service=drive.files(), function=u'list', page_message=page_message, + feed = callGAPIpages(drive.files(), u'list', u'items', page_message=page_message, fields=u'items(id,title,parents(id),mimeType),nextPageToken', maxResults=GC_Values[GC_DRIVE_MAX_RESULTS]) printDriveFolderContents(feed, root_folder, 0) @@ -3543,15 +3543,15 @@ def deleteEmptyDriveFolders(users): while deleted_empty: sys.stderr.write(u'Getting folders for %s...\n' % user) page_message = u' got %%%%total_items%%%% folders for %s...\n' % user - feed = callGAPIpages(service=drive.files(), function=u'list', page_message=page_message, + feed = callGAPIpages(drive.files(), u'list', u'items', page_message=page_message, q=query, fields=u'items(title,id),nextPageToken', maxResults=GC_Values[GC_DRIVE_MAX_RESULTS]) deleted_empty = False for folder in feed: - children = callGAPI(service=drive.children(), function=u'list', + children = callGAPI(drive.children(), u'list', folderId=folder[u'id'], fields=u'items(id)', maxResults=1) if not u'items' in children or len(children[u'items']) == 0: print convertUTF8(u' deleting empty folder %s...' % folder[u'title']) - callGAPI(service=drive.files(), function=u'delete', fileId=folder[u'id']) + callGAPI(drive.files(), u'delete', fileId=folder[u'id']) deleted_empty = True else: print convertUTF8(u' not deleting folder %s because it contains at least 1 item (%s)' % (folder[u'title'], children[u'items'][0][u'id'])) @@ -3701,15 +3701,15 @@ def doUpdateDriveFile(users): for fileId in fileIds: if operation == u'update': if media_body: - result = callGAPI(service=drive.files(), function=u'update', fileId=fileId, convert=convert, ocr=ocr, ocrLanguage=ocrLanguage, media_body=media_body, body=body, fields='id') + result = callGAPI(drive.files(), u'update', fileId=fileId, convert=convert, ocr=ocr, ocrLanguage=ocrLanguage, media_body=media_body, body=body, fields='id') else: - result = callGAPI(service=drive.files(), function=u'patch', fileId=fileId, convert=convert, ocr=ocr, ocrLanguage=ocrLanguage, body=body, fields='id,labels') + result = callGAPI(drive.files(), u'patch', fileId=fileId, convert=convert, ocr=ocr, ocrLanguage=ocrLanguage, body=body, fields='id,labels') try: print u'Successfully updated %s drive file with content from %s' % (result[u'id'], local_filename) except UnboundLocalError: print u'Successfully updated drive file/folder ID %s' % (result[u'id']) else: - result = callGAPI(service=drive.files(), function=u'copy', fileId=fileId, convert=convert, ocr=ocr, ocrLanguage=ocrLanguage, body=body, fields=u'id,labels') + result = callGAPI(drive.files(), u'copy', fileId=fileId, convert=convert, ocr=ocr, ocrLanguage=ocrLanguage, body=body, fields=u'id,labels') print u'Successfully copied %s to %s' % (fileId, result[u'id']) def createDriveFile(users): @@ -3812,7 +3812,7 @@ def createDriveFile(users): body[u'parents'].append({u'id': a_parent}) if local_filepath: media_body = googleapiclient.http.MediaFileUpload(local_filepath, mimetype=mimetype, resumable=True) - result = callGAPI(service=drive.files(), function=u'insert', convert=convert, ocr=ocr, ocrLanguage=ocrLanguage, media_body=media_body, body=body, fields='id') + result = callGAPI(drive.files(), u'insert', convert=convert, ocr=ocr, ocrLanguage=ocrLanguage, media_body=media_body, body=body, fields='id') try: print u'Successfully uploaded %s to Drive file ID %s' % (local_filename, result[u'id']) except UnboundLocalError: @@ -3880,7 +3880,7 @@ def downloadDriveFile(users): i = 0 for fileId in fileIds: extension = None - result = callGAPI(service=drive.files(), function=u'get', fileId=fileId, fields=u'fileSize,title,mimeType,downloadUrl,exportLinks') + result = callGAPI(drive.files(), u'get', fileId=fileId, fields=u'fileSize,title,mimeType,downloadUrl,exportLinks') if result[u'mimeType'] == u'application/vnd.google-apps.folder': print convertUTF8(u'Skipping download of folder %s' % result[u'title']) continue @@ -3937,7 +3937,7 @@ def showDriveFileInfo(users): for user in users: fileId = sys.argv[5] drive = buildGAPIServiceObject(u'drive', user) - feed = callGAPI(service=drive.files(), function=u'get', fileId=fileId) + feed = callGAPI(drive.files(), u'get', fileId=fileId) for setting in feed: if setting == u'kind': continue @@ -3976,7 +3976,7 @@ def transferSecCals(users): sys.exit(2) for user in users: source_cal = buildGAPIServiceObject(u'calendar', user) - source_calendars = callGAPIpages(service=source_cal.calendarList(), function=u'list', minAccessRole=u'owner', showHidden=True, fields=u'items(id),nextPageToken') + source_calendars = callGAPIpages(source_cal.calendarList(), u'list', u'items', minAccessRole=u'owner', showHidden=True, fields=u'items(id),nextPageToken') for source_cal in source_calendars: if source_cal[u'id'].find(u'@group.calendar.google.com') != -1: doCalendarAddACL(calendarId=source_cal[u'id'], act_as=user, role=u'owner', scope=u'user', entity=target_user) @@ -3995,12 +3995,12 @@ def transferDriveFiles(users): print u'ERROR: %s is not a valid argument for "gam transfer drive"' % sys.argv[i] sys.exit(2) target_drive = buildGAPIServiceObject(u'drive', target_user) - target_about = callGAPI(service=target_drive.about(), function=u'get', fields=u'quotaBytesTotal,quotaBytesUsed,rootFolderId') + target_about = callGAPI(target_drive.about(), u'get', fields=u'quotaBytesTotal,quotaBytesUsed,rootFolderId') target_drive_free = int(target_about[u'quotaBytesTotal']) - int(target_about[u'quotaBytesUsed']) for user in users: counter = 0 source_drive = buildGAPIServiceObject(u'drive', user) - source_about = callGAPI(service=source_drive.about(), function=u'get', fields=u'quotaBytesTotal,quotaBytesUsed,rootFolderId, permissionId') + source_about = callGAPI(source_drive.about(), u'get', fields=u'quotaBytesTotal,quotaBytesUsed,rootFolderId, permissionId') source_drive_size = int(source_about[u'quotaBytesUsed']) if target_drive_free < source_drive_size: systemErrorExit(4, MESSAGE_NO_TRANSFER_LACK_OF_DISK_SPACE.format(source_drive_size / 1024 / 1024, target_drive_free / 1024 / 1024)) @@ -4010,7 +4010,7 @@ def transferDriveFiles(users): source_permissionid = source_about[u'permissionId'] print u"Getting file list for source user: %s..." % user page_message = u' got %%total_items%% files\n' - source_drive_files = callGAPIpages(service=source_drive.files(), function=u'list', page_message=page_message, + source_drive_files = callGAPIpages(source_drive.files(), u'list', u'items', page_message=page_message, q=u"'me' in owners and trashed = false", fields=u'items(id,parents,mimeType),nextPageToken') all_source_file_ids = [] for source_drive_file in source_drive_files: @@ -4018,7 +4018,7 @@ def transferDriveFiles(users): total_count = len(source_drive_files) print u"Getting folder list for target user: %s..." % target_user page_message = u' got %%total_items%% folders\n' - target_folders = callGAPIpages(service=target_drive.files(), function=u'list', page_message=page_message, + target_folders = callGAPIpages(target_drive.files(), u'list', u'items', page_message=page_message, q=u"'me' in owners and mimeType = 'application/vnd.google-apps.folder'", fields=u'items(id,title),nextPageToken') got_top_folder = False all_target_folder_ids = [] @@ -4028,7 +4028,7 @@ def transferDriveFiles(users): target_top_folder = target_folder[u'id'] got_top_folder = True if not got_top_folder: - create_folder = callGAPI(service=target_drive.files(), function=u'insert', body={u'title': u'%s old files' % user, u'mimeType': u'application/vnd.google-apps.folder'}, fields=u'id') + create_folder = callGAPI(target_drive.files(), u'insert', body={u'title': u'%s old files' % user, u'mimeType': u'application/vnd.google-apps.folder'}, fields=u'id') target_top_folder = create_folder[u'id'] transferred_files = [] while True: # we loop thru, skipping files until all of their parents are done @@ -4053,7 +4053,7 @@ def transferDriveFiles(users): counter += 1 print u'Changing owner for file %s (%s/%s)' % (drive_file[u'id'], counter, total_count) body = {u'role': u'owner', u'type': u'user', u'value': target_user} - callGAPI(service=source_drive.permissions(), function=u'insert', soft_errors=True, fileId=file_id, sendNotificationEmails=False, body=body) + callGAPI(source_drive.permissions(), u'insert', soft_errors=True, fileId=file_id, sendNotificationEmails=False, body=body) target_parents = [] for parent in source_parents: try: @@ -4063,9 +4063,9 @@ def transferDriveFiles(users): target_parents.append({u'id': parent[u'id']}) except TypeError: pass - callGAPI(service=target_drive.files(), function=u'patch', soft_errors=True, retry_reasons=[u'notFound'], fileId=file_id, body={u'parents': target_parents}) + callGAPI(target_drive.files(), u'patch', soft_errors=True, retry_reasons=[u'notFound'], fileId=file_id, body={u'parents': target_parents}) if remove_source_user: - callGAPI(service=target_drive.permissions(), function=u'delete', soft_errors=True, fileId=file_id, permissionId=source_permissionid) + callGAPI(target_drive.permissions(), u'delete', soft_errors=True, fileId=file_id, permissionId=source_permissionid) if not skipped_files: break @@ -4088,7 +4088,7 @@ def doImap(users): emailsettings.domain = GC_Values[GC_DOMAIN] #make sure it's back at default domain print u"Setting IMAP Access to %s for %s (%s of %s)" % (str(enable), user+u'@'+emailsettings.domain, i, count) i += 1 - callGData(service=emailsettings, function=u'UpdateImap', soft_errors=True, username=user, enable=enable) + callGData(emailsettings, u'UpdateImap', soft_errors=True, username=user, enable=enable) def getImap(users): emailsettings = getEmailSettingsObject() @@ -4100,7 +4100,7 @@ def getImap(users): user = user[:user.find(u'@')] else: emailsettings.domain = GC_Values[GC_DOMAIN] - imapsettings = callGData(service=emailsettings, function=u'GetImap', soft_errors=True, username=user) + imapsettings = callGData(emailsettings, u'GetImap', soft_errors=True, username=user) try: print u'User %s IMAP Enabled:%s (%s of %s)' % (user+u'@'+emailsettings.domain, imapsettings[u'enable'], i, count) except TypeError: @@ -4155,9 +4155,9 @@ def doLicense(users, operation): if user.find(u'@') == -1: user = u'%s@%s' % (user, GC_Values[GC_DOMAIN]) if operation == u'delete': - callGAPI(service=lic.licenseAssignments(), function=operation, soft_errors=True, productId=productId, skuId=skuId, userId=user) + callGAPI(lic.licenseAssignments(), operation, soft_errors=True, productId=productId, skuId=skuId, userId=user) elif operation == u'insert': - callGAPI(service=lic.licenseAssignments(), function=operation, soft_errors=True, productId=productId, skuId=skuId, body={u'userId': user}) + callGAPI(lic.licenseAssignments(), operation, soft_errors=True, productId=productId, skuId=skuId, body={u'userId': user}) elif operation == u'patch': try: old_sku = sys.argv[6] @@ -4167,7 +4167,7 @@ def doLicense(users, operation): print u'ERROR: You need to specify the user\'s old SKU as the last argument' sys.exit(2) _, old_sku = getProductAndSKU(old_sku) - callGAPI(service=lic.licenseAssignments(), function=operation, soft_errors=True, productId=productId, skuId=old_sku, userId=user, body={u'skuId': skuId}) + callGAPI(lic.licenseAssignments(), operation, soft_errors=True, productId=productId, skuId=old_sku, userId=user, body={u'skuId': skuId}) def doPop(users): if sys.argv[4].lower() in true_values: @@ -4220,7 +4220,7 @@ def doPop(users): emailsettings.domain = GC_Values[GC_DOMAIN] #make sure it's back at default domain print u"Setting POP Access to %s for %s (%s of %s)" % (str(enable), user+u'@'+emailsettings.domain, i, count) i += 1 - callGData(service=emailsettings, function=u'UpdatePop', soft_errors=True, username=user, enable=enable, enable_for=enable_for, action=action) + callGData(emailsettings, u'UpdatePop', soft_errors=True, username=user, enable=enable, enable_for=enable_for, action=action) def getPop(users): emailsettings = getEmailSettingsObject() @@ -4230,7 +4230,7 @@ def getPop(users): user = user[:user.find(u'@')] else: emailsettings.domain = GC_Values[GC_DOMAIN] - popsettings = callGData(service=emailsettings, function=u'GetPop', soft_errors=True, username=user) + popsettings = callGData(emailsettings, u'GetPop', soft_errors=True, username=user) try: print u'User %s POP Enabled:%s Action:%s' % (user+u'@'+emailsettings.domain, popsettings[u'enable'], popsettings[u'action']) except TypeError: @@ -4264,7 +4264,7 @@ def doSendAs(users): emailsettings.domain = GC_Values[GC_DOMAIN] #make sure it's back at default domain print u"Allowing %s to send as %s (%s of %s)" % (user+u'@'+emailsettings.domain, sendas, i, count) i += 1 - callGData(service=emailsettings, function=u'CreateSendAsAlias', soft_errors=True, username=user, name=sendasName, address=sendas, make_default=make_default, reply_to=reply_to) + callGData(emailsettings, u'CreateSendAsAlias', soft_errors=True, username=user, name=sendasName, address=sendas, make_default=make_default, reply_to=reply_to) def showSendAs(users): emailsettings = getEmailSettingsObject() @@ -4275,7 +4275,7 @@ def showSendAs(users): else: emailsettings.domain = GC_Values[GC_DOMAIN] print u'%s has the following send as aliases:' % (user+u'@'+emailsettings.domain) - sendases = callGData(service=emailsettings, function=u'GetSendAsAlias', soft_errors=True, username=user) + sendases = callGData(emailsettings, u'GetSendAsAlias', soft_errors=True, username=user) try: for sendas in sendases: if sendas[u'isDefault'] == u'true': @@ -4308,7 +4308,7 @@ def doLanguage(users): emailsettings.domain = GC_Values[GC_DOMAIN] #make sure it's back at default domain print u"Setting the language for %s to %s (%s of %s)" % (user+u'@'+emailsettings.domain, language, i, count) i += 1 - callGData(service=emailsettings, function=u'UpdateLanguage', soft_errors=True, username=user, language=language) + callGData(emailsettings, u'UpdateLanguage', soft_errors=True, username=user, language=language) def doUTF(users): if sys.argv[4].lower() in true_values: @@ -4329,7 +4329,7 @@ def doUTF(users): emailsettings.domain = GC_Values[GC_DOMAIN] #make sure it's back at default domain print u"Setting UTF-8 to %s for %s (%s of %s)" % (str(SetUTF), user+u'@'+emailsettings.domain, i, count) i += 1 - callGData(service=emailsettings, function=u'UpdateGeneral', soft_errors=True, username=user, unicode=SetUTF) + callGData(emailsettings, u'UpdateGeneral', soft_errors=True, username=user, unicode=SetUTF) def doPageSize(users): if sys.argv[4] == u'25' or sys.argv[4] == u'50' or sys.argv[4] == u'100': @@ -4348,7 +4348,7 @@ def doPageSize(users): emailsettings.domain = GC_Values[GC_DOMAIN] #make sure it's back at default domain print u"Setting Page Size to %s for %s (%s of %s)" % (PageSize, user+u'@'+emailsettings.domain, i, count) i += 1 - callGData(service=emailsettings, function=u'UpdateGeneral', soft_errors=True, username=user, page_size=PageSize) + callGData(emailsettings, u'UpdateGeneral', soft_errors=True, username=user, page_size=PageSize) def doShortCuts(users): if sys.argv[4].lower() in true_values: @@ -4369,7 +4369,7 @@ def doShortCuts(users): emailsettings.domain = GC_Values[GC_DOMAIN] #make sure it's back at default domain print u"Setting Keyboard Short Cuts to %s for %s (%s of %s)" % (str(SetShortCuts), user+u'@'+emailsettings.domain, i, count) i += 1 - callGData(service=emailsettings, function=u'UpdateGeneral', soft_errors=True, username=user, shortcuts=SetShortCuts) + callGData(emailsettings, u'UpdateGeneral', soft_errors=True, username=user, shortcuts=SetShortCuts) def doArrows(users): if sys.argv[4].lower() in true_values: @@ -4390,7 +4390,7 @@ def doArrows(users): emailsettings.domain = GC_Values[GC_DOMAIN] #make sure it's back at default domain print u"Setting Personal Indicator Arrows to %s for %s (%s of %s)" % (str(SetArrows), user+u'@'+emailsettings.domain, i, count) i += 1 - callGData(service=emailsettings, function=u'UpdateGeneral', soft_errors=True, username=user, arrows=SetArrows) + callGData(emailsettings, u'UpdateGeneral', soft_errors=True, username=user, arrows=SetArrows) def doSnippets(users): if sys.argv[4].lower() in true_values: @@ -4411,7 +4411,7 @@ def doSnippets(users): emailsettings.domain = GC_Values[GC_DOMAIN] #make sure it's back at default domain print u"Setting Preview Snippets to %s for %s (%s of %s)" % (str(SetSnippets), user+u'@'+emailsettings.domain, i, count) i += 1 - callGData(service=emailsettings, function=u'UpdateGeneral', soft_errors=True, username=user, snippets=SetSnippets) + callGData(emailsettings, u'UpdateGeneral', soft_errors=True, username=user, snippets=SetSnippets) def doLabel(users): label = sys.argv[4] @@ -4450,7 +4450,7 @@ def doLabel(users): gmail = buildGAPIServiceObject(u'gmail', user) print u"Creating label %s for %s (%s of %s)" % (label, user, i, count) i += 1 - callGAPI(service=gmail.users().labels(), function=u'create', soft_errors=True, userId=user, body=body) + callGAPI(gmail.users().labels(), u'create', soft_errors=True, userId=user, body=body) def doDeleteMessages(trashOrDelete, users): query = None @@ -4477,8 +4477,7 @@ def doDeleteMessages(trashOrDelete, users): print u'Searching messages for %s' % user gmail = buildGAPIServiceObject(u'gmail', user) page_message = u'Got %%%%total_items%%%% messages for user %s' % user - listResult = callGAPIpages(service=gmail.users().messages(), - function=u'list', items=u'messages', page_message=page_message, + listResult = callGAPIpages(gmail.users().messages(), u'list', u'messages', page_message=page_message, userId=u'me', q=query, includeSpamTrash=True, soft_errors=True) del_count = len(listResult) if not doIt: @@ -4491,7 +4490,7 @@ def doDeleteMessages(trashOrDelete, users): for del_me in listResult: i += 1 print u' %s message %s for user %s (%s/%s)' % (trashOrDelete, del_me[u'id'], user, i, del_count) - callGAPI(service=gmail.users().messages(), function=trashOrDelete, + callGAPI(gmail.users().messages(), trashOrDelete, id=del_me[u'id'], userId=u'me') def doDeleteLabel(users): @@ -4499,7 +4498,7 @@ def doDeleteLabel(users): for user in users: gmail = buildGAPIServiceObject(u'gmail', user) print u'Getting all labels for %s...' % user - labels = callGAPI(service=gmail.users().labels(), function=u'list', userId=user, fields=u'labels(name,id,type)') + labels = callGAPI(gmail.users().labels(), u'list', userId=user, fields=u'labels(name,id,type)') del_labels = [] if label == u'--ALL_LABELS--': for del_label in labels[u'labels']: @@ -4553,7 +4552,7 @@ def showLabels(users): sys.exit(2) for user in users: gmail = buildGAPIServiceObject(u'gmail', user) - labels = callGAPI(service=gmail.users().labels(), function=u'list', userId=user, soft_errors=True) + labels = callGAPI(gmail.users().labels(), u'list', userId=user, soft_errors=True) if labels: for label in labels[u'labels']: if label[u'type'] == u'system' and not show_system: @@ -4581,7 +4580,7 @@ def showGmailProfile(users): gmail = buildGAPIServiceObject(u'gmail', user, soft_errors=True) if not gmail: continue - results = callGAPI(service=gmail.users(), function=u'getProfile', userId=u'me', soft_errors=True) + results = callGAPI(gmail.users(), u'getProfile', userId=u'me', soft_errors=True) if results: for item in results: if item not in profiles[0]: @@ -4619,7 +4618,7 @@ def updateLabels(users): sys.exit(2) for user in users: gmail = buildGAPIServiceObject(u'gmail', user) - labels = callGAPI(service=gmail.users().labels(), function=u'list', userId=user, fields=u'labels(id,name)') + labels = callGAPI(gmail.users().labels(), u'list', userId=user, fields=u'labels(id,name)') label_id = None for label in labels[u'labels']: if label[u'name'].lower() == label_name.lower(): @@ -4627,7 +4626,7 @@ def updateLabels(users): break if not label_id: print 'Error: user does not have a label named %s' % label_name - callGAPI(service=gmail.users().labels(), function=u'patch', soft_errors=True, userId=user, id=label_id, body=body) + callGAPI(gmail.users().labels(), u'patch', soft_errors=True, userId=user, id=label_id, body=body) def renameLabels(users): search = u'^Inbox/(.*)$' @@ -4650,7 +4649,7 @@ def renameLabels(users): pattern = re.compile(search, re.IGNORECASE) for user in users: gmail = buildGAPIServiceObject(u'gmail', user) - labels = callGAPI(service=gmail.users().labels(), function=u'list', userId=user) + labels = callGAPI(gmail.users().labels(), u'list', userId=user) for label in labels[u'labels']: if label[u'type'] == u'system': continue @@ -4659,12 +4658,12 @@ def renameLabels(users): new_label_name = replace % match_result.groups() print u' Renaming "%s" to "%s"' % (label[u'name'], new_label_name) try: - callGAPI(service=gmail.users().labels(), function=u'patch', soft_errors=True, throw_reasons=[u'aborted'], id=label[u'id'], userId=user, body={u'name': new_label_name}) + callGAPI(gmail.users().labels(), u'patch', soft_errors=True, throw_reasons=[u'aborted'], id=label[u'id'], userId=user, body={u'name': new_label_name}) except googleapiclient.errors.HttpError: if merge: print u' Merging %s label to existing %s label' % (label[u'name'], new_label_name) q = u'label:"%s"' % label[u'name'] - messages_to_relabel = callGAPIpages(service=gmail.users().messages(), function=u'list', items=u'messages', userId=user, q=q) + messages_to_relabel = callGAPIpages(gmail.users().messages(), u'list', u'messages', userId=user, q=q) if len(messages_to_relabel) > 0: for new_label in labels[u'labels']: if new_label[u'name'].lower() == new_label_name.lower(): @@ -4674,12 +4673,12 @@ def renameLabels(users): i = 1 for message_to_relabel in messages_to_relabel: print u' relabeling message %s (%s/%s)' % (message_to_relabel[u'id'], i, len(messages_to_relabel)) - callGAPI(service=gmail.users().messages(), function=u'modify', userId=user, id=message_to_relabel[u'id'], body=body) + callGAPI(gmail.users().messages(), u'modify', userId=user, id=message_to_relabel[u'id'], body=body) i += 1 else: print u' no messages with %s label' % label[u'name'] print u' Deleting label %s' % label[u'name'] - callGAPI(service=gmail.users().labels(), function=u'delete', id=label[u'id'], userId=user) + callGAPI(gmail.users().labels(), u'delete', id=label[u'id'], userId=user) else: print u' Error: looks like %s already exists, not renaming. Use the "merge" argument to merge the labels' % new_label_name @@ -4762,7 +4761,7 @@ def doFilter(users): emailsettings.domain = GC_Values[GC_DOMAIN] #make sure it's back at default domain print u"Creating filter for %s (%s of %s)" % (user+'@'+emailsettings.domain, i, count) i += 1 - callGData(service=emailsettings, function=u'CreateFilter', soft_errors=True, + callGData(emailsettings, u'CreateFilter', soft_errors=True, username=user, from_=from_, to=to, subject=subject, has_the_word=has_the_word, does_not_have_the_word=does_not_have_the_word, has_attachment=has_attachment, label=label, should_mark_as_read=should_mark_as_read, should_archive=should_archive, should_star=should_star, forward_to=forward_to, should_trash=should_trash, should_not_spam=should_not_spam) @@ -4806,7 +4805,7 @@ def doForward(users): emailsettings.domain = GC_Values[GC_DOMAIN] #make sure it's back at default domain print u"Turning forward %s for %s, emails will be %s (%s of %s)" % (sys.argv[4], user+'@'+emailsettings.domain, action, i, count) i += 1 - callGData(service=emailsettings, function=u'UpdateForwarding', soft_errors=True, username=user, enable=enable, action=action, forward_to=forward_to) + callGData(emailsettings, u'UpdateForwarding', soft_errors=True, username=user, enable=enable, action=action, forward_to=forward_to) def getForward(users): emailsettings = getEmailSettingsObject() @@ -4816,7 +4815,7 @@ def getForward(users): user = user[:user.find(u'@')] else: emailsettings.domain = GC_Values[GC_DOMAIN] - forward = callGData(service=emailsettings, function=u'GetForward', soft_errors=True, username=user) + forward = callGData(emailsettings, u'GetForward', soft_errors=True, username=user) try: print u"User %s: Forward To:%s Enabled:%s Action:%s" % (user+u'@'+emailsettings.domain, forward[u'forwardTo'], forward[u'enable'], forward[u'action']) except TypeError: @@ -4844,7 +4843,7 @@ def doSignature(users): print u"Setting Signature for %s (%s of %s)" % (user+u'@'+emailsettings.domain, i, count) uri = u'https://apps-apis.google.com/a/feeds/emailsettings/2.0/%s/%s/signature' % (emailsettings.domain, user) i += 1 - callGData(service=emailsettings, function=u'Put', soft_errors=True, data=xmlsig, uri=uri) + callGData(emailsettings, u'Put', soft_errors=True, data=xmlsig, uri=uri) def getSignature(users): emailsettings = getEmailSettingsObject() @@ -4854,7 +4853,7 @@ def getSignature(users): user = user[:user.find(u'@')] else: emailsettings.domain = GC_Values[GC_DOMAIN] - signature = callGData(service=emailsettings, function=u'GetSignature', soft_errors=True, username=user) + signature = callGData(emailsettings, u'GetSignature', soft_errors=True, username=user) try: sys.stderr.write(u"User %s signature:\n " % (user+u'@'+emailsettings.domain)) print convertUTF8(u" %s" % signature[u'signature']) @@ -4880,7 +4879,7 @@ def doWebClips(users): emailsettings.domain = GC_Values[GC_DOMAIN] #make sure it's back at default domain print u"Turning Web Clips %s for %s (%s of %s)" % (sys.argv[4], user+u'@'+emailsettings.domain, i, count) i += 1 - callGData(service=emailsettings, function=u'UpdateWebClipSettings', soft_errors=True, username=user, enable=enable) + callGData(emailsettings, u'UpdateWebClipSettings', soft_errors=True, username=user, enable=enable) def doVacation(users): subject = message = u'' @@ -4931,7 +4930,7 @@ def doVacation(users): emailsettings.domain = GC_Values[GC_DOMAIN] #make sure it's back at default domain print u"Setting Vacation for %s (%s of %s)" % (user+'@'+emailsettings.domain, i, count) i += 1 - callGData(service=emailsettings, function=u'UpdateVacation', + callGData(emailsettings, u'UpdateVacation', soft_errors=True, username=user, enable=enable, subject=subject, message=message, contacts_only=contacts_only, domain_only=domain_only, start_date=start_date, end_date=end_date) @@ -4944,7 +4943,7 @@ def getVacation(users): user = user[:user.find(u'@')] else: emailsettings.domain = GC_Values[GC_DOMAIN] - vacationsettings = callGData(service=emailsettings, function=u'GetVacation', soft_errors=True, username=user) + vacationsettings = callGData(emailsettings, u'GetVacation', soft_errors=True, username=user) try: print convertUTF8(u'''User %s Enabled: %s @@ -4962,7 +4961,7 @@ def getVacation(users): def doDelSchema(): cd = buildGAPIObject(u'directory') schemaKey = sys.argv[3] - callGAPI(service=cd.schemas(), function=u'delete', customerId=GC_Values[GC_CUSTOMER_ID], schemaKey=schemaKey) + callGAPI(cd.schemas(), u'delete', customerId=GC_Values[GC_CUSTOMER_ID], schemaKey=schemaKey) print u'Deleted schema %s' % schemaKey def doCreateOrUpdateUserSchema(): @@ -5004,15 +5003,15 @@ def doCreateOrUpdateUserSchema(): print 'ERROR: %s is not a valid argument for "gam create schema"' % sys.argv[i] sys.exit(2) if sys.argv[1].lower() == u'create': - result = callGAPI(service=cd.schemas(), function=u'insert', customerId=GC_Values[GC_CUSTOMER_ID], body=body) + result = callGAPI(cd.schemas(), u'insert', customerId=GC_Values[GC_CUSTOMER_ID], body=body) print 'Created user schema %s' % result[u'schemaName'] elif sys.argv[1].lower() == u'update': - result = callGAPI(service=cd.schemas(), function=u'update', customerId=GC_Values[GC_CUSTOMER_ID], body=body, schemaKey=schemaName) + result = callGAPI(cd.schemas(), u'update', customerId=GC_Values[GC_CUSTOMER_ID], body=body, schemaKey=schemaName) print 'Updated user schema %s' % result[u'schemaName'] def doPrintUserSchemas(): cd = buildGAPIObject(u'directory') - schemas = callGAPI(service=cd.schemas(), function=u'list', customerId=GC_Values[GC_CUSTOMER_ID]) + schemas = callGAPI(cd.schemas(), u'list', customerId=GC_Values[GC_CUSTOMER_ID]) if not schemas or u'schemas' not in schemas: return for schema in schemas[u'schemas']: @@ -5032,7 +5031,7 @@ def doPrintUserSchemas(): def doGetUserSchema(): cd = buildGAPIObject(u'directory') schemaKey = sys.argv[3] - schema = callGAPI(service=cd.schemas(), function=u'get', customerId=GC_Values[GC_CUSTOMER_ID], schemaKey=schemaKey) + schema = callGAPI(cd.schemas(), u'get', customerId=GC_Values[GC_CUSTOMER_ID], schemaKey=schemaKey) print u'Schema: %s' % schema[u'schemaName'] for a_key in schema: if a_key not in [u'schemaName', u'fields', u'etag', u'kind']: @@ -5385,10 +5384,10 @@ def doCreateUser(): body[u'password'] = gen_sha512_hash(body[u'password']) body[u'hashFunction'] = u'crypt' print u"Creating account for %s" % body[u'primaryEmail'] - callGAPI(service=cd.users(), function='insert', body=body, fields=u'primaryEmail') + callGAPI(cd.users(), 'insert', body=body, fields=u'primaryEmail') if do_admin: print u' Changing admin status for %s to %s' % (body[u'primaryEmail'], admin_body[u'status']) - callGAPI(service=cd.users(), function=u'makeAdmin', userKey=body[u'primaryEmail'], body=admin_body) + callGAPI(cd.users(), u'makeAdmin', userKey=body[u'primaryEmail'], body=admin_body) def doCreateGroup(): cd = buildGAPIObject(u'directory') @@ -5447,10 +5446,10 @@ def doCreateGroup(): if not got_name: body[u'name'] = body[u'email'] print u"Creating group %s" % body[u'email'] - callGAPI(service=cd.groups(), function=u'insert', body=body, fields=u'email') + callGAPI(cd.groups(), u'insert', body=body, fields=u'email') if use_gs_api: gs = buildGAPIObject(u'groupssettings') - callGAPI(service=gs.groups(), function=u'patch', retry_reasons=[u'serviceLimit'], groupUniqueId=body[u'email'], body=gs_body) + callGAPI(gs.groups(), u'patch', retry_reasons=[u'serviceLimit'], groupUniqueId=body[u'email'], body=gs_body) def doCreateAlias(): cd = buildGAPIObject(u'directory') @@ -5467,14 +5466,14 @@ def doCreateAlias(): targetKey = u'%s@%s' % (targetKey, GC_Values[GC_DOMAIN]) print u'Creating alias %s for %s %s' % (body[u'alias'], target_type, targetKey) if target_type == u'user': - callGAPI(service=cd.users().aliases(), function=u'insert', userKey=targetKey, body=body) + callGAPI(cd.users().aliases(), u'insert', userKey=targetKey, body=body) elif target_type == u'group': - callGAPI(service=cd.groups().aliases(), function=u'insert', groupKey=targetKey, body=body) + callGAPI(cd.groups().aliases(), u'insert', groupKey=targetKey, body=body) elif target_type == u'target': try: - callGAPI(service=cd.users().aliases(), function=u'insert', throw_reasons=[u'invalid'], userKey=targetKey, body=body) + callGAPI(cd.users().aliases(), u'insert', throw_reasons=[u'invalid'], userKey=targetKey, body=body) except googleapiclient.errors.HttpError: - callGAPI(service=cd.groups().aliases(), function=u'insert', groupKey=targetKey, body=body) + callGAPI(cd.groups().aliases(), u'insert', groupKey=targetKey, body=body) def doCreateOrg(): cd = buildGAPIObject(u'directory') @@ -5497,7 +5496,7 @@ def doCreateOrg(): else: print u'ERROR: %s is not a valid argument for "gam create org"' % sys.argv[i] sys.exit(2) - callGAPI(service=cd.orgunits(), function=u'insert', customerId=GC_Values[GC_CUSTOMER_ID], body=body) + callGAPI(cd.orgunits(), u'insert', customerId=GC_Values[GC_CUSTOMER_ID], body=body) def doCreateResourceCalendar(): cd = buildGAPIObject(u'directory') @@ -5515,7 +5514,7 @@ def doCreateResourceCalendar(): print u'ERROR: %s is not a valid argument for "gam create resource"' % sys.argv[i] sys.exit(2) print u'Creating resource %s...' % body[u'resourceId'] - callGAPI(service=cd.resources().calendars(), function=u'insert', + callGAPI(cd.resources().calendars(), u'insert', customer=GC_Values[GC_CUSTOMER_ID], body=body) def doUpdateUser(users): @@ -5894,7 +5893,7 @@ def doUpdateUser(users): elif user.find(u'@') == -1: user = u'%s@%s' % (user, GC_Values[GC_DOMAIN]) if u'primaryEmail' in body and body[u'primaryEmail'][:4].lower() == u'vfe@': - user_primary = callGAPI(service=cd.users(), function=u'get', userKey=user, fields=u'primaryEmail,id') + user_primary = callGAPI(cd.users(), u'get', userKey=user, fields=u'primaryEmail,id') user = user_primary[u'id'] user_primary = user_primary[u'primaryEmail'] user_name = user_primary[:user_primary.find(u'@')] @@ -5903,34 +5902,34 @@ def doUpdateUser(users): body[u'emails'] = [{u'type': u'custom', u'customType': u'former_employee', u'primary': False, u'address': user_primary}] sys.stdout.write(u'updating user %s...\n' % user) if do_update_user: - callGAPI(service=cd.users(), function=u'patch', userKey=user, body=body) + callGAPI(cd.users(), u'patch', userKey=user, body=body) if do_admin_user: - callGAPI(service=cd.users(), function=u'makeAdmin', userKey=user, body={u'status': is_admin}) + callGAPI(cd.users(), u'makeAdmin', userKey=user, body={u'status': is_admin}) def doRemoveUsersAliases(users): cd = buildGAPIObject(u'directory') for user in users: - user_aliases = callGAPI(service=cd.users(), function=u'get', userKey=user, fields=u'aliases,id,primaryEmail') + user_aliases = callGAPI(cd.users(), u'get', userKey=user, fields=u'aliases,id,primaryEmail') user_id = user_aliases[u'id'] user_primary = user_aliases[u'primaryEmail'] if u'aliases' in user_aliases: print u'%s has %s aliases' % (user_primary, len(user_aliases[u'aliases'])) for an_alias in user_aliases[u'aliases']: print u' removing alias %s for %s...' % (an_alias, user_primary) - callGAPI(service=cd.users().aliases(), function=u'delete', userKey=user_id, alias=an_alias) + callGAPI(cd.users().aliases(), u'delete', userKey=user_id, alias=an_alias) else: print u'%s has no aliases' % user_primary def doRemoveUsersGroups(users): cd = buildGAPIObject(u'directory') for user in users: - user_groups = callGAPIpages(service=cd.groups(), items=u'groups', function=u'list', userKey=user, fields=u'groups(id,email)') + user_groups = callGAPIpages(cd.groups(), u'list', u'groups', userKey=user, fields=u'groups(id,email)') num_groups = len(user_groups) print u'%s is in %s groups' % (user, num_groups) i = 1 for user_group in user_groups: print u' removing %s from %s (%s/%s)' % (user, user_group[u'email'], i, num_groups) - callGAPI(service=cd.members(), function=u'delete', soft_errors=True, groupKey=user_group[u'id'], memberKey=user) + callGAPI(cd.members(), u'delete', soft_errors=True, groupKey=user_group[u'id'], memberKey=user) i += 1 print u'' @@ -5960,9 +5959,9 @@ def doUpdateGroup(): if sys.argv[4].lower() == u'add': body = {u'role': role} body[u'email'] = user_email - result = callGAPI(service=cd.members(), function=u'insert', soft_errors=True, groupKey=group, body=body) + result = callGAPI(cd.members(), u'insert', soft_errors=True, groupKey=group, body=body) elif sys.argv[4].lower() == u'update': - result = callGAPI(service=cd.members(), function=u'update', soft_errors=True, groupKey=group, memberKey=user_email, body={u'email': user_email, u'role': role}) + result = callGAPI(cd.members(), u'update', soft_errors=True, groupKey=group, memberKey=user_email, body={u'email': user_email, u'role': role}) try: if str(result[u'email']).lower() != user_email.lower(): print u'added %s (primary address) to group' % result[u'email'] @@ -5987,12 +5986,12 @@ def doUpdateGroup(): for user_email in to_add: sys.stderr.write(u' adding %s %s\n' % (role, user_email)) try: - result = callGAPI(service=cd.members(), function=u'insert', soft_errors=True, throw_reasons=[u'duplicate'], groupKey=group, body={u'email': user_email, u'role': role}) + result = callGAPI(cd.members(), u'insert', soft_errors=True, throw_reasons=[u'duplicate'], groupKey=group, body={u'email': user_email, u'role': role}) except googleapiclient.errors.HttpError: - result = callGAPI(service=cd.members(), function=u'update', soft_errors=True, groupKey=group, memberKey=user_email, body={u'email': user_email, u'role': role}) + result = callGAPI(cd.members(), u'update', soft_errors=True, groupKey=group, memberKey=user_email, body={u'email': user_email, u'role': role}) for user_email in to_remove: sys.stderr.write(u' removing %s\n' % user_email) - result = callGAPI(service=cd.members(), function=u'delete', soft_errors=True, groupKey=group, memberKey=user_email) + result = callGAPI(cd.members(), u'delete', soft_errors=True, groupKey=group, memberKey=user_email) elif sys.argv[4].lower() == u'remove': i = 5 if sys.argv[i].lower() in [u'member', u'manager', u'owner']: @@ -6005,7 +6004,7 @@ def doUpdateGroup(): if user_email != u'*' and user_email.find(u'@') == -1: user_email = u'%s@%s' % (user_email, GC_Values[GC_DOMAIN]) sys.stderr.write(u' removing %s\n' % user_email) - result = callGAPI(service=cd.members(), function=u'delete', soft_errors=True, groupKey=group, memberKey=user_email) + result = callGAPI(cd.members(), u'delete', soft_errors=True, groupKey=group, memberKey=user_email) else: i = 4 use_cd_api = False @@ -6071,12 +6070,12 @@ def doUpdateGroup(): cd_body[u'email'] = u'%s@%s' % (cd_body[u'email'], GC_Values[GC_DOMAIN]) except KeyError: pass - cd_result = callGAPI(service=cd.groups(), function=u'patch', groupKey=group, body=cd_body) + cd_result = callGAPI(cd.groups(), u'patch', groupKey=group, body=cd_body) if use_gs_api: gs = buildGAPIObject(u'groupssettings') if use_cd_api: group = cd_result[u'email'] - callGAPI(service=gs.groups(), function=u'patch', retry_reasons=[u'serviceLimit'], groupUniqueId=group, body=gs_body) + callGAPI(gs.groups(), u'patch', retry_reasons=[u'serviceLimit'], groupUniqueId=group, body=gs_body) print u'updated group %s' % group def doUpdateAlias(): @@ -6092,18 +6091,18 @@ def doUpdateAlias(): if target_email.find(u'@') == -1: target_email = u'%s@%s' % (target_email, GC_Values[GC_DOMAIN]) try: - callGAPI(service=cd.users().aliases(), function=u'delete', throw_reasons=[u'invalid'], userKey=alias, alias=alias) + callGAPI(cd.users().aliases(), u'delete', throw_reasons=[u'invalid'], userKey=alias, alias=alias) except googleapiclient.errors.HttpError: - callGAPI(service=cd.groups().aliases(), function=u'delete', groupKey=alias, alias=alias) + callGAPI(cd.groups().aliases(), u'delete', groupKey=alias, alias=alias) if target_type == u'user': - callGAPI(service=cd.users().aliases(), function=u'insert', userKey=target_email, body={u'alias': alias}) + callGAPI(cd.users().aliases(), u'insert', userKey=target_email, body={u'alias': alias}) elif target_type == u'group': - callGAPI(service=cd.groups().aliases(), function=u'insert', groupKey=target_email, body={u'alias': alias}) + callGAPI(cd.groups().aliases(), u'insert', groupKey=target_email, body={u'alias': alias}) elif target_type == u'target': try: - callGAPI(service=cd.users().aliases(), function=u'insert', throw_reasons=[u'invalid'], userKey=target_email, body={u'alias': alias}) + callGAPI(cd.users().aliases(), u'insert', throw_reasons=[u'invalid'], userKey=target_email, body={u'alias': alias}) except googleapiclient.errors.HttpError: - callGAPI(service=cd.groups().aliases(), function=u'insert', groupKey=target_email, body={u'alias': alias}) + callGAPI(cd.groups().aliases(), u'insert', groupKey=target_email, body={u'alias': alias}) print u'updated alias %s' % alias def doUpdateResourceCalendar(): @@ -6126,7 +6125,7 @@ def doUpdateResourceCalendar(): sys.exit(2) # Use patch since it seems to work better. # update requires name to be set. - callGAPI(service=cd.resources().calendars(), function=u'patch', + callGAPI(cd.resources().calendars(), u'patch', customer=GC_Values[GC_CUSTOMER_ID], calendarResourceId=resId, body=body, fields=u'') print u'updated resource %s' % resId @@ -6136,7 +6135,7 @@ def doUpdateCros(): deviceId = sys.argv[3] if deviceId[:6].lower() == u'query:': query = deviceId[6:] - devices_result = callGAPIpages(service=cd.chromeosdevices(), function=u'list', items=u'chromeosdevices', + devices_result = callGAPIpages(cd.chromeosdevices(), u'list', u'chromeosdevices', query=query, customerId=GC_Values[GC_CUSTOMER_ID], fields=u'chromeosdevices/deviceId,nextPageToken') devices = list() for a_device in devices_result: @@ -6177,7 +6176,7 @@ def doUpdateCros(): i = 1 for this_device in devices: print u' updating %s (%s of %s)' % (this_device, i, device_count) - callGAPI(service=cd.chromeosdevices(), function=u'patch', deviceId=this_device, body=body, customerId=GC_Values[GC_CUSTOMER_ID]) + callGAPI(cd.chromeosdevices(), u'patch', deviceId=this_device, body=body, customerId=GC_Values[GC_CUSTOMER_ID]) i += 1 def doUpdateMobile(): @@ -6214,14 +6213,14 @@ def doUpdateMobile(): print u'ERROR: %s is not a valid argument for "gam update mobile"' % sys.argv[i] sys.exit(2) if doPatch: - callGAPI(service=cd.mobiledevices(), function=u'patch', resourceId=resourceId, body=patch_body, customerId=GC_Values[GC_CUSTOMER_ID]) + callGAPI(cd.mobiledevices(), u'patch', resourceId=resourceId, body=patch_body, customerId=GC_Values[GC_CUSTOMER_ID]) if doAction: - callGAPI(service=cd.mobiledevices(), function=u'action', resourceId=resourceId, body=action_body, customerId=GC_Values[GC_CUSTOMER_ID]) + callGAPI(cd.mobiledevices(), u'action', resourceId=resourceId, body=action_body, customerId=GC_Values[GC_CUSTOMER_ID]) def doDeleteMobile(): cd = buildGAPIObject(u'directory') resourceId = sys.argv[3] - callGAPI(service=cd.mobiledevices(), function='delete', resourceId=resourceId, customerId=GC_Values[GC_CUSTOMER_ID]) + callGAPI(cd.mobiledevices(), 'delete', resourceId=resourceId, customerId=GC_Values[GC_CUSTOMER_ID]) def doUpdateOrg(): cd = buildGAPIObject(u'directory') @@ -6236,7 +6235,7 @@ def doUpdateOrg(): current_cros = 1 for cros in users: sys.stderr.write(u' moving %s to %s (%s/%s)\n' % (cros, orgUnitPath, current_cros, cros_count)) - callGAPI(service=cd.chromeosdevices(), function=u'patch', soft_errors=True, + callGAPI(cd.chromeosdevices(), u'patch', soft_errors=True, customerId=GC_Values[GC_CUSTOMER_ID], deviceId=cros, body={u'orgUnitPath': '//%s' % orgUnitPath}) current_cros += 1 else: @@ -6247,7 +6246,7 @@ def doUpdateOrg(): for user in users: sys.stderr.write(u' moving %s to %s (%s/%s)\n' % (user, orgUnitPath, current_user, user_count)) try: - callGAPI(service=cd.users(), function=u'patch', throw_reasons=[u'conditionNotMet'], userKey=user, body={u'orgUnitPath': orgUnitPath}) + callGAPI(cd.users(), u'patch', throw_reasons=[u'conditionNotMet'], userKey=user, body={u'orgUnitPath': orgUnitPath}) except googleapiclient.errors.HttpError: pass current_user += 1 @@ -6277,7 +6276,7 @@ def doUpdateOrg(): sys.exit(2) if orgUnitPath[0] == u'/': # we don't want a / at the beginning for OU updates orgUnitPath = orgUnitPath[1:] - callGAPI(service=cd.orgunits(), function=u'update', customerId=GC_Values[GC_CUSTOMER_ID], orgUnitPath=orgUnitPath, body=body) + callGAPI(cd.orgunits(), u'update', customerId=GC_Values[GC_CUSTOMER_ID], orgUnitPath=orgUnitPath, body=body) def doWhatIs(): cd = buildGAPIObject(u'directory') @@ -6285,7 +6284,7 @@ def doWhatIs(): if email.find(u'@') == -1: email = u'%s@%s' % (email, GC_Values[GC_DOMAIN]) try: - user_or_alias = callGAPI(service=cd.users(), function=u'get', throw_reasons=[u'notFound', u'badRequest', u'invalid'], userKey=email, fields=u'primaryEmail') + user_or_alias = callGAPI(cd.users(), u'get', throw_reasons=[u'notFound', u'badRequest', u'invalid'], userKey=email, fields=u'primaryEmail') if user_or_alias[u'primaryEmail'].lower() == email.lower(): sys.stderr.write(u'%s is a user\n\n' % email) doGetUserInfo(user_email=email) @@ -6298,7 +6297,7 @@ def doWhatIs(): sys.stderr.write(u'%s is not a user...\n' % email) sys.stderr.write(u'%s is not a user alias...\n' % email) try: - group = callGAPI(service=cd.groups(), function=u'get', throw_reasons=[u'notFound', u'badRequest'], groupKey=email, fields=u'email') + group = callGAPI(cd.groups(), u'get', throw_reasons=[u'notFound', u'badRequest'], groupKey=email, fields=u'email') except googleapiclient.errors.HttpError: sys.stderr.write(u'%s is not a group either!\n\nDoesn\'t seem to exist!\n\n' % email) sys.exit(1) @@ -6356,7 +6355,7 @@ def doGetUserInfo(user_email=None): else: print u'ERROR: %s is not a valid argument for "gam info user"' % sys.argv[i] sys.exit(2) - user = callGAPI(service=cd.users(), function=u'get', userKey=user_email, projection=projection, customFieldMask=customFieldMask, viewType=viewType) + user = callGAPI(cd.users(), u'get', userKey=user_email, projection=projection, customFieldMask=customFieldMask, viewType=viewType) print u'User: %s' % user[u'primaryEmail'] if u'name' in user and u'givenName' in user[u'name']: print convertUTF8(u'First Name: %s' % user[u'name'][u'givenName']) @@ -6480,7 +6479,7 @@ def doGetUserInfo(user_email=None): for alias in user[u'nonEditableAliases']: print u' %s' % alias if getGroups: - groups = callGAPIpages(service=cd.groups(), function=u'list', items=u'groups', userKey=user_email, fields=u'groups(name,email),nextPageToken') + groups = callGAPIpages(cd.groups(), u'list', u'groups', userKey=user_email, fields=u'groups(name,email),nextPageToken') if len(groups) > 0: print u'Groups: (%s)' % len(groups) for group in groups: @@ -6495,7 +6494,7 @@ def doGetUserInfo(user_email=None): u'Google-Vault-Former-Employee']: productId, skuId = getProductAndSKU(sku) try: - result = callGAPI(service=lic.licenseAssignments(), function=u'get', throw_reasons=['notFound'], userId=user_email, productId=productId, skuId=skuId) + result = callGAPI(lic.licenseAssignments(), u'get', throw_reasons=['notFound'], userId=user_email, productId=productId, skuId=skuId) except googleapiclient.errors.HttpError: continue print u' %s' % result[u'skuId'] @@ -6520,9 +6519,9 @@ def doGetGroupInfo(group_name=None): group_name = group_name[4:] elif group_name.find(u'@') == -1: group_name = group_name+u'@'+GC_Values[GC_DOMAIN] - basic_info = callGAPI(service=cd.groups(), function=u'get', groupKey=group_name) + basic_info = callGAPI(cd.groups(), u'get', groupKey=group_name) try: - settings = callGAPI(service=gs.groups(), function=u'get', retry_reasons=[u'serviceLimit'], throw_reasons=u'authError', + settings = callGAPI(gs.groups(), u'get', retry_reasons=[u'serviceLimit'], throw_reasons=u'authError', groupUniqueId=basic_info[u'email']) # Use email address retrieved from cd since GS API doesn't support uid except googleapiclient.errors.HttpError: pass @@ -6550,7 +6549,7 @@ def doGetGroupInfo(group_name=None): except UnboundLocalError: pass if get_users: - members = callGAPIpages(service=cd.members(), function=u'list', items=u'members', groupKey=group_name) + members = callGAPIpages(cd.members(), u'list', u'members', groupKey=group_name) print u'Members:' for member in members: try: @@ -6569,9 +6568,9 @@ def doGetAliasInfo(alias_email=None): if alias_email.find(u'@') == -1: alias_email = u'%s@%s' % (alias_email, GC_Values[GC_DOMAIN]) try: - result = callGAPI(service=cd.users(), function=u'get', throw_reasons=[u'invalid', u'badRequest'], userKey=alias_email) + result = callGAPI(cd.users(), u'get', throw_reasons=[u'invalid', u'badRequest'], userKey=alias_email) except googleapiclient.errors.HttpError: - result = callGAPI(service=cd.groups(), function=u'get', groupKey=alias_email) + result = callGAPI(cd.groups(), u'get', groupKey=alias_email) print u' Alias Email: %s' % alias_email try: if result[u'primaryEmail'].lower() == alias_email.lower(): @@ -6585,7 +6584,7 @@ def doGetAliasInfo(alias_email=None): def doGetResourceCalendarInfo(): cd = buildGAPIObject(u'directory') resId = sys.argv[3] - resource = callGAPI(service=cd.resources().calendars(), function=u'get', + resource = callGAPI(cd.resources().calendars(), u'get', customer=GC_Values[GC_CUSTOMER_ID], calendarResourceId=resId) for key, value in resource.items(): if key in [u'kind', u'etag', u'etags']: @@ -6595,13 +6594,13 @@ def doGetResourceCalendarInfo(): def doGetCrosInfo(): cd = buildGAPIObject(u'directory') deviceId = sys.argv[3] - info = callGAPI(service=cd.chromeosdevices(), function=u'get', customerId=GC_Values[GC_CUSTOMER_ID], deviceId=deviceId) + info = callGAPI(cd.chromeosdevices(), u'get', customerId=GC_Values[GC_CUSTOMER_ID], deviceId=deviceId) print_json(None, info) def doGetMobileInfo(): cd = buildGAPIObject(u'directory') deviceId = sys.argv[3] - info = callGAPI(service=cd.mobiledevices(), function=u'get', customerId=GC_Values[GC_CUSTOMER_ID], resourceId=deviceId) + info = callGAPI(cd.mobiledevices(), u'get', customerId=GC_Values[GC_CUSTOMER_ID], resourceId=deviceId) print_json(None, info) def print_json(object_name, object_value, spacing=u''): @@ -6653,13 +6652,13 @@ def doUpdateNotification(): print u'ERROR: notifications need to be marked as read or unread.' sys.exit(2) if get_all: - notifications = callGAPIpages(service=cd.notifications(), function=u'list', customer=GC_Values[GC_CUSTOMER_ID], fields=u'items(notificationId,isUnread),nextPageToken') + notifications = callGAPIpages(cd.notifications(), u'list', u'items', customer=GC_Values[GC_CUSTOMER_ID], fields=u'items(notificationId,isUnread),nextPageToken') for noti in notifications: if noti[u'isUnread'] != isUnread: ids.append(noti[u'notificationId']) print u'Marking %s notification(s) as %s...' % (len(ids), mark_as) for notificationId in ids: - result = callGAPI(service=cd.notifications(), function=u'patch', customer=GC_Values[GC_CUSTOMER_ID], notificationId=notificationId, body={u'isUnread': isUnread}, fields=u'notificationId,isUnread') + result = callGAPI(cd.notifications(), u'patch', customer=GC_Values[GC_CUSTOMER_ID], notificationId=notificationId, body={u'isUnread': isUnread}, fields=u'notificationId,isUnread') if result[u'isUnread']: read_result = u'unread' else: @@ -6682,22 +6681,22 @@ def doDeleteNotification(): print 'ERROR: %s is not a valid argument for "gam delete notification", expected id' % sys.argv[i] sys.exit(2) if get_all: - notifications = callGAPIpages(service=cd.notifications(), function=u'list', customer=GC_Values[GC_CUSTOMER_ID], fields=u'items(notificationId),nextPageToken') + notifications = callGAPIpages(cd.notifications(), u'list', u'items', customer=GC_Values[GC_CUSTOMER_ID], fields=u'items(notificationId),nextPageToken') for noti in notifications: ids.append(noti[u'notificationId']) print u'Deleting %s notification(s)...' % len(ids) for notificationId in ids: - callGAPI(service=cd.notifications(), function=u'delete', customer=GC_Values[GC_CUSTOMER_ID], notificationId=notificationId) + callGAPI(cd.notifications(), u'delete', customer=GC_Values[GC_CUSTOMER_ID], notificationId=notificationId) print u'deleted %s' % id def doSiteVerifyShow(): verif = buildGAPIObject(u'siteVerification') a_domain = sys.argv[3] - txt_record = callGAPI(service=verif.webResource(), function=u'getToken', body={u'site':{u'type':u'INET_DOMAIN', u'identifier':a_domain}, u'verificationMethod':u'DNS_TXT'}) + txt_record = callGAPI(verif.webResource(), u'getToken', body={u'site':{u'type':u'INET_DOMAIN', u'identifier':a_domain}, u'verificationMethod':u'DNS_TXT'}) print u'TXT Record Name: %s' % a_domain print u'TXT Record Value: %s' % txt_record[u'token'] print - cname_record = callGAPI(service=verif.webResource(), function=u'getToken', body={u'site':{u'type':u'INET_DOMAIN', u'identifier':a_domain}, u'verificationMethod':u'DNS_CNAME'}) + cname_record = callGAPI(verif.webResource(), u'getToken', body={u'site':{u'type':u'INET_DOMAIN', u'identifier':a_domain}, u'verificationMethod':u'DNS_CNAME'}) cname_token = cname_record[u'token'] cname_list = cname_token.split(u' ') cname_subdomain = cname_list[0] @@ -6705,20 +6704,20 @@ def doSiteVerifyShow(): print u'CNAME Record Name: %s.%s' % (cname_subdomain, a_domain) print u'CNAME Record Value: %s' % cname_value print u'' - webserver_file_record = callGAPI(service=verif.webResource(), function=u'getToken', body={u'site':{u'type':u'SITE', u'identifier':u'http://%s/' % a_domain}, u'verificationMethod':u'FILE'}) + webserver_file_record = callGAPI(verif.webResource(), u'getToken', body={u'site':{u'type':u'SITE', u'identifier':u'http://%s/' % a_domain}, u'verificationMethod':u'FILE'}) webserver_file_token = webserver_file_record[u'token'] print u'Saving web server verification file to: %s' % webserver_file_token writeFile(webserver_file_token, u'google-site-verification: {0}'.format(webserver_file_token), continueOnError=True) print u'Verification File URL: http://%s/%s' % (a_domain, webserver_file_token) print - webserver_meta_record = callGAPI(service=verif.webResource(), function=u'getToken', body={u'site':{u'type':u'SITE', u'identifier':u'http://%s/' % a_domain}, u'verificationMethod':u'META'}) + webserver_meta_record = callGAPI(verif.webResource(), u'getToken', body={u'site':{u'type':u'SITE', u'identifier':u'http://%s/' % a_domain}, u'verificationMethod':u'META'}) print u'Meta URL: http://%s/' % a_domain print u'Meta HTML Header Data: %s' % webserver_meta_record[u'token'] print def doGetSiteVerifications(): verif = buildGAPIObject(u'siteVerification') - sites = callGAPI(service=verif.webResource(), function=u'list') + sites = callGAPI(verif.webResource(), u'list') try: for site in sites[u'items']: print u'Site: %s' % site[u'site'][u'identifier'] @@ -6746,12 +6745,12 @@ def doSiteVerifyAttempt(): identifier = u'http://%s/' % a_domain body = {u'site':{u'type':verify_type, u'identifier':identifier}, u'verificationMethod':verificationMethod} try: - verify_result = callGAPI(service=verif.webResource(), function=u'insert', throw_reasons=[u'badRequest'], verificationMethod=verificationMethod, body=body) + verify_result = callGAPI(verif.webResource(), u'insert', throw_reasons=[u'badRequest'], verificationMethod=verificationMethod, body=body) except googleapiclient.errors.HttpError, e: error = json.loads(e.content) message = error[u'error'][u'errors'][0][u'message'] print u'ERROR: %s' % message - verify_data = callGAPI(service=verif.webResource(), function=u'getToken', body=body) + verify_data = callGAPI(verif.webResource(), u'getToken', body=body) print u'Method: %s' % verify_data[u'method'] print u'Token: %s' % verify_data[u'token'] if verify_data[u'method'] == u'DNS_CNAME': @@ -6808,7 +6807,7 @@ def doGetNotifications(): print 'ERROR: %s is not a valid argument for "gam info notification", expected unreadonly' % sys.argv[i] sys.exit(2) i += 1 - notifications = callGAPIpages(service=cd.notifications(), function=u'list', customer=GC_Values[GC_CUSTOMER_ID]) + notifications = callGAPIpages(cd.notifications(), u'list', u'items', customer=GC_Values[GC_CUSTOMER_ID]) for notification in notifications: if unread_only and not notification[u'isUnread']: continue @@ -6843,19 +6842,19 @@ def doGetOrgInfo(): print u'ERROR: %s is not a valid argument for "gam info org"' % sys.argv[i] sys.exit(2) if name == u'/': - orgs = callGAPI(service=cd.orgunits(), function=u'list', + orgs = callGAPI(cd.orgunits(), u'list', customerId=GC_Values[GC_CUSTOMER_ID], type=u'children', fields=u'organizationUnits/parentOrgUnitId') name = orgs[u'organizationUnits'][0][u'parentOrgUnitId'] if len(name) > 1 and name[0] == u'/': name = name[1:] - result = callGAPI(service=cd.orgunits(), function=u'get', customerId=GC_Values[GC_CUSTOMER_ID], orgUnitPath=name) + result = callGAPI(cd.orgunits(), u'get', customerId=GC_Values[GC_CUSTOMER_ID], orgUnitPath=name) print_json(None, result) if get_users: name = result[u'orgUnitPath'] print u'Users: ' page_message = u'Got %%total_items%% users: %%first_item%% - %%last_item%%\n' - users = callGAPIpages(service=cd.users(), function=u'list', items=u'users', page_message=page_message, + users = callGAPIpages(cd.users(), u'list', u'users', page_message=page_message, message_attribute=u'primaryEmail', customer=GC_Values[GC_CUSTOMER_ID], query=u"orgUnitPath='%s'" % name, fields=u'users(primaryEmail,orgUnitPath),nextPageToken', maxResults=GC_Values[GC_USER_MAX_RESULTS]) for user in users: @@ -6869,7 +6868,7 @@ def doGetOrgInfo(): def doGetASPs(users): cd = buildGAPIObject(u'directory') for user in users: - asps = callGAPI(service=cd.asps(), function=u'list', userKey=user) + asps = callGAPI(cd.asps(), u'list', userKey=user) print u'Application-Specific Passwords for %s' % user try: for asp in asps[u'items']: @@ -6889,7 +6888,7 @@ def doDelASP(users): cd = buildGAPIObject(u'directory') codeId = sys.argv[5] for user in users: - callGAPI(service=cd.asps(), function=u'delete', userKey=user, codeId=codeId) + callGAPI(cd.asps(), u'delete', userKey=user, codeId=codeId) print u'deleted ASP %s for %s' % (codeId, user) def printBackupCodes(user, codes): @@ -6907,7 +6906,7 @@ def doGetBackupCodes(users): cd = buildGAPIObject(u'directory') for user in users: try: - codes = callGAPI(service=cd.verificationCodes(), function=u'list', throw_reasons=[u'invalidArgument', u'invalid'], userKey=user) + codes = callGAPI(cd.verificationCodes(), u'list', throw_reasons=[u'invalidArgument', u'invalid'], userKey=user) except googleapiclient.errors.HttpError: codes = None printBackupCodes(user, codes) @@ -6915,15 +6914,15 @@ def doGetBackupCodes(users): def doGenBackupCodes(users): cd = buildGAPIObject(u'directory') for user in users: - callGAPI(service=cd.verificationCodes(), function=u'generate', userKey=user) - codes = callGAPI(service=cd.verificationCodes(), function=u'list', userKey=user) + callGAPI(cd.verificationCodes(), u'generate', userKey=user) + codes = callGAPI(cd.verificationCodes(), u'list', userKey=user) printBackupCodes(user, codes) def doDelBackupCodes(users): cd = buildGAPIObject(u'directory') for user in users: try: - callGAPI(service=cd.verificationCodes(), function=u'invalidate', soft_errors=True, throw_reasons=[u'invalid',], userKey=user) + callGAPI(cd.verificationCodes(), u'invalidate', soft_errors=True, throw_reasons=[u'invalid',], userKey=user) except googleapiclient.errors.HttpError: print u'No 2SV backup codes for %s' % user continue @@ -6949,13 +6948,13 @@ def doGetTokens(users): clientId = commonClientIds(clientId) for user in users: try: - token = callGAPI(service=cd.tokens(), function=u'get', throw_reasons=[u'notFound',], userKey=user, clientId=clientId, fields=u'clientId') + token = callGAPI(cd.tokens(), u'get', throw_reasons=[u'notFound',], userKey=user, clientId=clientId, fields=u'clientId') except googleapiclient.errors.HttpError: continue print u'%s has allowed this token' % user return for user in users: - tokens = callGAPI(service=cd.tokens(), function=u'list', userKey=user) + tokens = callGAPI(cd.tokens(), u'list', userKey=user) print u'Tokens for %s:' % user try: for token in tokens[u'items']: @@ -6982,34 +6981,34 @@ def doDelTokens(users): clientId = sys.argv[6] clientId = commonClientIds(clientId) for user in users: - callGAPI(service=cd.tokens(), function=u'delete', userKey=user, clientId=clientId) + callGAPI(cd.tokens(), u'delete', userKey=user, clientId=clientId) print u'Deleted token for %s' % user def doDeprovUser(users): cd = buildGAPIObject(u'directory') for user in users: print u'Getting Application Specific Passwords for %s' % user - asps = callGAPI(service=cd.asps(), function=u'list', userKey=user, fields=u'items/codeId') + asps = callGAPI(cd.asps(), u'list', userKey=user, fields=u'items/codeId') i = 1 try: for asp in asps[u'items']: print u' deleting ASP %s of %s' % (i, len(asps['items'])) - callGAPI(service=cd.asps(), function=u'delete', userKey=user, codeId=asp[u'codeId']) + callGAPI(cd.asps(), u'delete', userKey=user, codeId=asp[u'codeId']) i += 1 except KeyError: print u'No ASPs' print u'Invalidating 2SV Backup Codes for %s' % user try: - callGAPI(service=cd.verificationCodes(), function=u'invalidate', soft_errors=True, throw_reasons=[u'invalid'], userKey=user) + callGAPI(cd.verificationCodes(), u'invalidate', soft_errors=True, throw_reasons=[u'invalid'], userKey=user) except googleapiclient.errors.HttpError: print u'No 2SV Backup Codes' print u'Getting tokens for %s...' % user - tokens = callGAPI(service=cd.tokens(), function=u'list', userKey=user, fields=u'items/clientId') + tokens = callGAPI(cd.tokens(), u'list', userKey=user, fields=u'items/clientId') i = 1 try: for token in tokens[u'items']: print u' deleting token %s of %s' % (i, len(tokens['items'])) - callGAPI(service=cd.tokens(), function=u'delete', userKey=user, clientId=token[u'clientId']) + callGAPI(cd.tokens(), u'delete', userKey=user, clientId=token[u'clientId']) i += 1 except KeyError: print u'No Tokens' @@ -7020,19 +7019,19 @@ def doUpdateInstance(): command = sys.argv[3].lower() if command == u'language': language = sys.argv[4] - callGData(service=adminObj, function=u'UpdateDefaultLanguage', defaultLanguage=language) + callGData(adminObj, u'UpdateDefaultLanguage', defaultLanguage=language) elif command == u'name': name = sys.argv[4] - callGData(service=adminObj, function=u'UpdateOrganizationName', organizationName=name) + callGData(adminObj, u'UpdateOrganizationName', organizationName=name) elif command == u'admin_secondary_email': admin_secondary_email = sys.argv[4] - callGData(service=adminObj, function=u'UpdateAdminSecondaryEmail', adminSecondaryEmail=admin_secondary_email) + callGData(adminObj, u'UpdateAdminSecondaryEmail', adminSecondaryEmail=admin_secondary_email) elif command == u'logo': logoFile = sys.argv[4] logoImage = readFile(logoFile) - callGData(service=adminObj, function=u'UpdateDomainLogo', logoImage=logoImage) + callGData(adminObj, u'UpdateDomainLogo', logoImage=logoImage) elif command == u'mx_verify': - result = callGData(service=adminObj, function=u'UpdateMXVerificationStatus') + result = callGData(adminObj, u'UpdateMXVerificationStatus') print u'Verification Method: %s' % result[u'verificationMethod'] print u'Verified: %s' % result[u'verified'] elif command == u'sso_settings': @@ -7072,25 +7071,25 @@ def doUpdateInstance(): else: print u'ERROR: unknown option for "gam update domain sso_settings...": %s' % sys.argv[i] sys.exit(2) - callGData(service=adminObj, function=u'UpdateSSOSettings', enableSSO=enableSSO, + callGData(adminObj, u'UpdateSSOSettings', enableSSO=enableSSO, samlSignonUri=samlSignonUri, samlLogoutUri=samlLogoutUri, changePasswordUri=changePasswordUri, ssoWhitelist=ssoWhitelist, useDomainSpecificIssuer=useDomainSpecificIssuer) elif command == u'sso_key': keyFile = sys.argv[4] keyData = readFile(keyFile) - callGData(service=adminObj, function=u'UpdateSSOKey', signingKey=keyData) + callGData(adminObj, u'UpdateSSOKey', signingKey=keyData) elif command == u'user_migrations': value = sys.argv[4].lower() if value not in [u'true', u'false']: print u'ERROR: value for user_migrations must be true or false, got %s' % sys.argv[4] sys.exit(2) - result = callGData(service=adminObj, function=u'UpdateUserMigrationStatus', enableUserMigration=value) + result = callGData(adminObj, u'UpdateUserMigrationStatus', enableUserMigration=value) elif command == u'outbound_gateway': gateway = sys.argv[4] mode = sys.argv[6].upper() try: - result = callGData(service=adminObj, function=u'UpdateOutboundGatewaySettings', smartHost=gateway, smtpMode=mode) + result = callGData(adminObj, u'UpdateOutboundGatewaySettings', smartHost=gateway, smtpMode=mode) except TypeError: pass elif command == u'email_route': @@ -7144,7 +7143,7 @@ def doUpdateInstance(): else: print u'ERROR: %s is not a valid argument for "gam update instance email_route"' % sys.argv[i] sys.exit(2) - callGData(service=adminObj, function=u'AddEmailRoute', routeDestination=destination, routeRewriteTo=rewrite_to, routeEnabled=enabled, + callGData(adminObj, u'AddEmailRoute', routeDestination=destination, routeRewriteTo=rewrite_to, routeEnabled=enabled, bounceNotifications=bounce_notifications, accountHandling=account_handling) else: print u'ERROR: %s is not a valid argument for "gam update instance"' % command @@ -7162,44 +7161,44 @@ def doGetInstanceInfo(): if GC_Values[GC_CUSTOMER_ID] != MY_CUSTOMER: customerId = GC_Values[GC_CUSTOMER_ID] else: - result = callGAPI(service=cd.users(), function=u'list', + result = callGAPI(cd.users(), u'list', fields=u'users(customerId)', customer=GC_Values[GC_CUSTOMER_ID], maxResults=1) try: customerId = result[u'users'][0][u'customerId'] except KeyError: customerId = UNKNOWN print u'Customer ID: %s' % customerId - default_language = callGAPI(service=adm.defaultLanguage(), function=u'get', domainName=GC_Values[GC_DOMAIN]) + default_language = callGAPI(adm.defaultLanguage(), u'get', domainName=GC_Values[GC_DOMAIN]) print u'Default Language: %s' % default_language[u'entry'][u'apps$property'][0][u'value'] - org_name = callGAPI(service=adm.organizationName(), function='get', domainName=GC_Values[GC_DOMAIN]) + org_name = callGAPI(adm.organizationName(), 'get', domainName=GC_Values[GC_DOMAIN]) print convertUTF8(u'Organization Name: %s' % org_name[u'entry'][u'apps$property'][0][u'value']) - admin_email = callGAPI(service=adm.adminSecondaryEmail(), function='get', domainName=GC_Values[GC_DOMAIN]) + admin_email = callGAPI(adm.adminSecondaryEmail(), 'get', domainName=GC_Values[GC_DOMAIN]) print u'Admin Secondary Email: %s' % admin_email[u'entry'][u'apps$property'][0][u'value'] - max_users = callGAPI(service=adm.maximumNumberOfUsers(), function=u'get', domainName=GC_Values[GC_DOMAIN]) + max_users = callGAPI(adm.maximumNumberOfUsers(), u'get', domainName=GC_Values[GC_DOMAIN]) print u'Maximum Users: %s' % max_users[u'entry'][u'apps$property'][0][u'value'] - current_users = callGAPI(service=adm.currentNumberOfUsers(), function=u'get', domainName=GC_Values[GC_DOMAIN]) + current_users = callGAPI(adm.currentNumberOfUsers(), u'get', domainName=GC_Values[GC_DOMAIN]) print u'Current Users: %s' % current_users[u'entry'][u'apps$property'][0][u'value'] - is_dom_verified = callGAPI(service=adm.isVerified(), function=u'get', domainName=GC_Values[GC_DOMAIN]) + is_dom_verified = callGAPI(adm.isVerified(), u'get', domainName=GC_Values[GC_DOMAIN]) print u'Domain is Verified: %s' % is_dom_verified[u'entry'][u'apps$property'][0][u'value'] - domain_edition = callGAPI(service=adm.edition(), function=u'get', domainName=GC_Values[GC_DOMAIN]) + domain_edition = callGAPI(adm.edition(), u'get', domainName=GC_Values[GC_DOMAIN]) print u'Domain Edition: %s' % domain_edition[u'entry'][u'apps$property'][0][u'value'] - customer_pin = callGAPI(service=adm.customerPIN(), function=u'get', domainName=GC_Values[GC_DOMAIN]) + customer_pin = callGAPI(adm.customerPIN(), u'get', domainName=GC_Values[GC_DOMAIN]) print u'Customer PIN: %s' % customer_pin[u'entry'][u'apps$property'][0][u'value'] - creation_time = callGAPI(service=adm.creationTime(), function=u'get', domainName=GC_Values[GC_DOMAIN]) + creation_time = callGAPI(adm.creationTime(), u'get', domainName=GC_Values[GC_DOMAIN]) my_date = creation_time[u'entry'][u'apps$property'][0][u'value'] my_date = my_date[:15] my_offset = creation_time[u'entry'][u'apps$property'][0][u'value'][19:] nice_time = datetime.datetime.strptime(my_date, u"%Y%m%dT%H%M%S") print u'Domain Creation Time: %s %s' % (nice_time, my_offset) - country_code = callGAPI(service=adm.countryCode(), function=u'get', domainName=GC_Values[GC_DOMAIN]) + country_code = callGAPI(adm.countryCode(), u'get', domainName=GC_Values[GC_DOMAIN]) print u'Domain Country Code: %s' % country_code[u'entry'][u'apps$property'][0][u'value'] - mxverificationstatus = callGAPI(service=adm.mxVerification(), function=u'get', domainName=GC_Values[GC_DOMAIN]) + mxverificationstatus = callGAPI(adm.mxVerification(), u'get', domainName=GC_Values[GC_DOMAIN]) for entry in mxverificationstatus[u'entry'][u'apps$property']: if entry[u'name'] == u'verified': print u'MX Verification Verified: %s' % entry[u'value'] elif entry[u'name'] == u'verificationMethod': print u'MX Verification Method: %s' % entry[u'value'] - ssosettings = callGAPI(service=adm.ssoGeneral(), function=u'get', domainName=GC_Values[GC_DOMAIN]) + ssosettings = callGAPI(adm.ssoGeneral(), u'get', domainName=GC_Values[GC_DOMAIN]) for entry in ssosettings[u'entry'][u'apps$property']: if entry[u'name'] == u'enableSSO': print u'SSO Enabled: %s' % entry[u'value'] @@ -7213,7 +7212,7 @@ def doGetInstanceInfo(): print u'SSO Whitelist IPs: %s' % entry[u'value'] elif entry[u'name'] == u'useDomainSpecificIssuer': print u'SSO Use Domain Specific Issuer: %s' % entry[u'value'] - ssokey = callGAPI(service=adm.ssoSigningKey(), function=u'get', silent_errors=True, soft_errors=True, domainName=GC_Values[GC_DOMAIN]) + ssokey = callGAPI(adm.ssoSigningKey(), u'get', silent_errors=True, soft_errors=True, domainName=GC_Values[GC_DOMAIN]) try: for entry in ssokey[u'entry'][u'apps$property']: if entry[u'name'] == u'algorithm': @@ -7230,10 +7229,10 @@ def doGetInstanceInfo(): print u'Full SSO Key: %s' % entry[u'value'] except TypeError: pass - migration_status = callGAPI(service=adm.userEmailMigrationEnabled(), function=u'get', domainName=GC_Values[GC_DOMAIN]) + migration_status = callGAPI(adm.userEmailMigrationEnabled(), u'get', domainName=GC_Values[GC_DOMAIN]) print u'User Migration Enabled: %s' % migration_status[u'entry'][u'apps$property'][0][u'value'] outbound_gateway_settings = {u'smartHost': u'', u'smtpMode': u''} # Initialize blank in case we get an 1801 Error - outbound_gateway_settings = callGAPI(service=adm.outboundGateway(), function=u'get', domainName=GC_Values[GC_DOMAIN]) + outbound_gateway_settings = callGAPI(adm.outboundGateway(), u'get', domainName=GC_Values[GC_DOMAIN]) try: for entry in outbound_gateway_settings[u'entry'][u'apps$property']: if entry[u'name'] == u'smartHost': @@ -7252,7 +7251,7 @@ def doDeleteUser(): elif user_email.find(u'@') == -1: user_email = u'%s@%s' % (user_email, GC_Values[GC_DOMAIN]) print u"Deleting account for %s" % (user_email) - callGAPI(service=cd.users(), function=u'delete', userKey=user_email) + callGAPI(cd.users(), u'delete', userKey=user_email) def doUndeleteUser(): cd = buildGAPIObject(u'directory') @@ -7273,8 +7272,8 @@ def doUndeleteUser(): user = u'%s@%s' % (user, GC_Values[GC_DOMAIN]) if not user_uid: print u'Looking up UID for %s...' % user - deleted_users = callGAPIpages(service=cd.users(), function=u'list', - items=u'users', customer=GC_Values[GC_CUSTOMER_ID], showDeleted=True, maxResults=GC_Values[GC_USER_MAX_RESULTS]) + deleted_users = callGAPIpages(cd.users(), u'list', u'users', + customer=GC_Values[GC_CUSTOMER_ID], showDeleted=True, maxResults=GC_Values[GC_USER_MAX_RESULTS]) matching_users = list() for deleted_user in deleted_users: if str(deleted_user[u'primaryEmail']).lower() == user: @@ -7299,7 +7298,7 @@ def doUndeleteUser(): else: user_uid = matching_users[0][u'id'] print u"Undeleting account for %s" % user - callGAPI(service=cd.users(), function=u'undelete', userKey=user_uid, body={u'orgUnitPath': orgUnit}) + callGAPI(cd.users(), u'undelete', userKey=user_uid, body={u'orgUnitPath': orgUnit}) def doDeleteGroup(): cd = buildGAPIObject(u'directory') @@ -7309,7 +7308,7 @@ def doDeleteGroup(): elif group.find(u'@') == -1: group = u'%s@%s' % (group, GC_Values[GC_DOMAIN]) print u"Deleting group %s" % group - callGAPI(service=cd.groups(), function=u'delete', groupKey=group) + callGAPI(cd.groups(), u'delete', groupKey=group) def doDeleteAlias(alias_email=None): cd = buildGAPIObject(u'directory') @@ -7327,7 +7326,7 @@ def doDeleteAlias(alias_email=None): print u"Deleting alias %s" % alias_email if is_user or (not is_user and not is_group): try: - callGAPI(service=cd.users().aliases(), function=u'delete', throw_reasons=[u'invalid', u'badRequest', u'notFound'], userKey=alias_email, alias=alias_email) + callGAPI(cd.users().aliases(), u'delete', throw_reasons=[u'invalid', u'badRequest', u'notFound'], userKey=alias_email, alias=alias_email) return except googleapiclient.errors.HttpError, e: error = json.loads(e.content) @@ -7336,13 +7335,13 @@ def doDeleteAlias(alias_email=None): print u'Error: The alias %s does not exist' % alias_email sys.exit(4) if not is_user or (not is_user and not is_group): - callGAPI(service=cd.groups().aliases(), function=u'delete', groupKey=alias_email, alias=alias_email) + callGAPI(cd.groups().aliases(), u'delete', groupKey=alias_email, alias=alias_email) def doDeleteResourceCalendar(): resId = sys.argv[3] cd = buildGAPIObject(u'directory') print u"Deleting resource calendar %s" % resId - callGAPI(service=cd.resources().calendars(), function=u'delete', + callGAPI(cd.resources().calendars(), u'delete', customer=GC_Values[GC_CUSTOMER_ID], calendarResourceId=resId) def doDeleteOrg(): @@ -7351,7 +7350,7 @@ def doDeleteOrg(): if name[0] == u'/': name = name[1:] print u"Deleting organization %s" % name - callGAPI(service=cd.orgunits(), function=u'delete', customerId=GC_Values[GC_CUSTOMER_ID], orgUnitPath=name) + callGAPI(cd.orgunits(), u'delete', customerId=GC_Values[GC_CUSTOMER_ID], orgUnitPath=name) def output_csv(csv_list, titles, list_type, todrive): csv.register_dialect(u'nixstdout', lineterminator=u'\n') @@ -7370,7 +7369,7 @@ def output_csv(csv_list, titles, list_type, todrive): print u'{0}{1}'.format(WARNING_PREFIX, MESSAGE_RESULTS_TOO_LARGE_FOR_GOOGLE_SPREADSHEET) convert = False drive = buildGAPIObject(u'drive') - result = callGAPI(service=drive.files(), function=u'insert', convert=convert, + result = callGAPI(drive.files(), u'insert', convert=convert, body={u'description': u' '.join(sys.argv), u'title': u'%s - %s' % (GC_Values[GC_DOMAIN], list_type), u'mimeType': u'text/csv'}, media_body=googleapiclient.http.MediaInMemoryUpload(string_file.getvalue(), mimetype=u'text/csv')) file_url = result[u'alternateLink'] @@ -7534,7 +7533,7 @@ def doPrintUsers(): fields = u'nextPageToken,users(%s)' % u','.join(user_fields) sys.stderr.write(u"Getting all users in Google Apps account (may take some time on a large account)...\n") page_message = u'Got %%total_items%% users: %%first_item%% - %%last_item%%\n' - all_users = callGAPIpages(service=cd.users(), function=u'list', items=u'users', page_message=page_message, + all_users = callGAPIpages(cd.users(), u'list', u'users', page_message=page_message, message_attribute=u'primaryEmail', customer=customer, domain=domain, fields=fields, showDeleted=deleted_only, orderBy=orderBy, sortOrder=sortOrder, viewType=viewType, query=query, projection=projection, customFieldMask=customFieldMask, maxResults=GC_Values[GC_USER_MAX_RESULTS]) @@ -7568,7 +7567,7 @@ def doPrintUsers(): for user in attributes[1:]: user_email = user[u'primaryEmail'] sys.stderr.write(u"Getting Group Membership for %s (%s/%s)\r\n" % (user_email, user_count, total_users)) - groups = callGAPIpages(service=cd.groups(), function=u'list', items=u'groups', userKey=user_email) + groups = callGAPIpages(cd.groups(), u'list', u'groups', userKey=user_email) grouplist = u'' for groupname in groups: grouplist += groupname[u'email']+' ' @@ -7669,7 +7668,7 @@ def doPrintGroups(): sys.exit(2) sys.stderr.write(u"Retrieving All Groups for Google Apps account (may take some time on a large account)...\n") page_message = u'Got %%num_items%% groups: %%first_item%% - %%last_item%%\n' - all_groups = callGAPIpages(service=cd.groups(), function=u'list', items=u'groups', page_message=page_message, + all_groups = callGAPIpages(cd.groups(), u'list', u'groups', page_message=page_message, message_attribute=u'email', customer=customer, domain=usedomain, userKey=usemember, fields=fields) total_groups = len(all_groups) count = 0 @@ -7717,7 +7716,7 @@ def doPrintGroups(): roles = u','.join(roles) sys.stderr.write(u' Getting %s for %s (%s of %s)\n' % (roles, group_vals[u'email'], count, total_groups)) page_message = u'Got %%num_items%% members: %%first_item%% - %%last_item%%\n' - all_group_members = callGAPIpages(service=cd.members(), function=u'list', items=u'members', page_message=page_message, + all_group_members = callGAPIpages(cd.members(), u'list', u'members', page_message=page_message, message_attribute=u'email', groupKey=group_vals[u'email'], roles=roles, fields=u'nextPageToken,members(email,role)') if members: all_true_members = list() @@ -7749,7 +7748,7 @@ def doPrintGroups(): if settings: sys.stderr.write(u" Retrieving Settings for group %s (%s of %s)...\r\n" % (group_vals[u'email'], count, total_groups)) gs = buildGAPIObject(u'groupssettings') - settings = callGAPI(service=gs.groups(), function=u'get', retry_reasons=[u'serviceLimit'], groupUniqueId=group_vals[u'email']) + settings = callGAPI(gs.groups(), u'get', retry_reasons=[u'serviceLimit'], groupUniqueId=group_vals[u'email']) for key in settings: if key in [u'email', u'name', u'description', u'kind', u'etag']: continue @@ -7816,7 +7815,7 @@ def doPrintOrgs(): org_attributes[0][u'Path'] = u'Path' titles.append(u'Path') sys.stderr.write(u"Retrieving All Organizational Units for your account (may take some time on large domain)...") - orgs = callGAPI(service=cd.orgunits(), function=u'list', customerId=GC_Values[GC_CUSTOMER_ID], fields=fields, type=listType, orgUnitPath=orgUnitPath) + orgs = callGAPI(cd.orgunits(), u'list', customerId=GC_Values[GC_CUSTOMER_ID], fields=fields, type=listType, orgUnitPath=orgUnitPath) sys.stderr.write(u"done\n") if not u'organizationUnits' in orgs: print u'0 org units in this Google Apps instance...' @@ -7875,7 +7874,7 @@ def doPrintAliases(): titles = [u'Alias', u'Target', u'TargetType'] sys.stderr.write(u"Retrieving All User Aliases for %s organization (may take some time on large domain)...\n" % GC_Values[GC_DOMAIN]) page_message = u'Got %%num_items%% users %%first_item%% - %%last_item%%\n' - all_users = callGAPIpages(service=cd.users(), function=u'list', items=u'users', page_message=page_message, + all_users = callGAPIpages(cd.users(), u'list', u'users', page_message=page_message, message_attribute=u'primaryEmail', customer=GC_Values[GC_CUSTOMER_ID], fields=u'users(primaryEmail,aliases),nextPageToken', maxResults=GC_Values[GC_USER_MAX_RESULTS]) for user in all_users: @@ -7886,7 +7885,7 @@ def doPrintAliases(): continue sys.stderr.write(u"Retrieving All User Aliases for %s organization (may take some time on large domain)...\n" % GC_Values[GC_DOMAIN]) page_message = u'Got %%num_items%% groups %%first_item%% - %%last_item%%\n' - all_groups = callGAPIpages(service=cd.groups(), function=u'list', items=u'groups', page_message=page_message, + all_groups = callGAPIpages(cd.groups(), u'list', u'groups', page_message=page_message, message_attribute=u'email', customer=GC_Values[GC_CUSTOMER_ID], fields=u'groups(email,aliases),nextPageToken') for group in all_groups: @@ -7913,14 +7912,14 @@ def doPrintGroupMembers(): sys.exit(2) member_attributes = [{u'group': u'group'},] if not all_groups: - all_groups = callGAPIpages(service=cd.groups(), function=u'list', items=u'groups', message_attribute=u'email', + all_groups = callGAPIpages(cd.groups(), u'list', u'groups', message_attribute=u'email', customer=GC_Values[GC_CUSTOMER_ID], fields=u'nextPageToken,groups(email)') total_groups = len(all_groups) i = 1 for group in all_groups: group_email = group[u'email'] sys.stderr.write(u'Getting members for %s (%s/%s)\n' % (group_email, i, total_groups)) - group_members = callGAPIpages(service=cd.members(), function=u'list', items=u'members', message_attribute=u'email', groupKey=group_email) + group_members = callGAPIpages(cd.members(), u'list', u'members', message_attribute=u'email', groupKey=group_email) for member in group_members: member_attr = {u'group': group_email} for title in member: @@ -7969,7 +7968,7 @@ def doPrintMobileDevices(): sys.exit(2) sys.stderr.write(u'Retrieving All Mobile Devices for organization (may take some time for large accounts)...\n') page_message = u'Got %%num_items%% mobile devices...\n' - all_mobile = callGAPIpages(service=cd.mobiledevices(), function=u'list', items=u'mobiledevices', page_message=page_message, + all_mobile = callGAPIpages(cd.mobiledevices(), u'list', u'mobiledevices', page_message=page_message, customerId=GC_Values[GC_CUSTOMER_ID], query=query, orderBy=orderBy, sortOrder=sortOrder, maxResults=GC_Values[GC_DEVICE_MAX_RESULTS]) for mobile in all_mobile: @@ -8051,7 +8050,7 @@ def doPrintCrosDevices(): projection = u'FULL' sys.stderr.write(u'Retrieving All Chrome OS Devices for organization (may take some time for large accounts)...\n') page_message = u'Got %%num_items%% Chrome devices...\n' - all_cros = callGAPIpages(service=cd.chromeosdevices(), function=u'list', items=u'chromeosdevices', page_message=page_message, + all_cros = callGAPIpages(cd.chromeosdevices(), u'list', u'chromeosdevices', page_message=page_message, query=query, customerId=GC_Values[GC_CUSTOMER_ID], projection=projection, orderBy=orderBy, sortOrder=sortOrder, maxResults=GC_Values[GC_DEVICE_MAX_RESULTS]) if all_cros: @@ -8118,7 +8117,7 @@ def doPrintLicenses(return_list=False, skus=None): product, sku = getProductAndSKU(sku) page_message = u'Got %%%%total_items%%%% Licenses for %s...\n' % sku try: - licenses += callGAPIpages(service=lic.licenseAssignments(), function=u'listForProductAndSku', throw_reasons=[u'invalid', u'forbidden'], page_message=page_message, + licenses += callGAPIpages(lic.licenseAssignments(), u'listForProductAndSku', u'items', throw_reasons=[u'invalid', u'forbidden'], page_message=page_message, customerId=GC_Values[GC_DOMAIN], productId=product, skuId=sku, fields=u'items(productId,skuId,userId),nextPageToken') except googleapiclient.errors.HttpError: licenses += [] @@ -8126,7 +8125,7 @@ def doPrintLicenses(return_list=False, skus=None): for productId in products: page_message = u'Got %%%%total_items%%%% Licenses for %s...\n' % productId try: - licenses += callGAPIpages(service=lic.licenseAssignments(), function=u'listForProduct', throw_reasons=[u'invalid', u'forbidden'], page_message=page_message, + licenses += callGAPIpages(lic.licenseAssignments(), u'listForProduct', u'items', throw_reasons=[u'invalid', u'forbidden'], page_message=page_message, customerId=GC_Values[GC_DOMAIN], productId=productId, fields=u'items(productId,skuId,userId),nextPageToken') except googleapiclient.errors.HttpError: licenses = +[] @@ -8167,7 +8166,7 @@ def doPrintTokens(): token_attributes[0][title] = title for user in all_users: sys.stderr.write(u' getting tokens for %s\n' % user) - user_tokens = callGAPI(service=cd.tokens(), function='list', userKey=user) + user_tokens = callGAPI(cd.tokens(), 'list', userKey=user) try: for user_token in user_tokens[u'items']: this_token = dict() @@ -8214,7 +8213,7 @@ def doPrintResourceCalendars(): fields = u'nextPageToken,items(%s)' % u','.join(fields) sys.stderr.write(u"Retrieving All Resource Calendars for your account (may take some time on a large domain)\n") page_message = u'Got %%total_items%% resources: %%first_item%% - %%last_item%%\n' - resources = callGAPIpages(service=cd.resources().calendars(), function=u'list', items=u'items', + resources = callGAPIpages(cd.resources().calendars(), u'list', u'items', page_message=page_message, message_attribute=u'resourceId', customer=GC_Values[GC_CUSTOMER_ID], fields=fields, maxResults=500) resources_attrib = [{u'resourceId':u'resourceId', @@ -8272,7 +8271,7 @@ def doCreateMonitor(): if source_user.find('@') > 0: audit.domain = source_user[source_user.find(u'@')+1:] source_user = source_user[:source_user.find(u'@')] - callGData(service=audit, function=u'createEmailMonitor', source_user=source_user, destination_user=destination_user, end_date=end_date, begin_date=begin_date, + callGData(audit, u'createEmailMonitor', source_user=source_user, destination_user=destination_user, end_date=end_date, begin_date=begin_date, incoming_headers_only=incoming_headers_only, outgoing_headers_only=outgoing_headers_only, drafts=drafts, drafts_headers_only=drafts_headers_only, chats=chats, chats_headers_only=chats_headers_only) @@ -8282,7 +8281,7 @@ def doShowMonitors(): if user.find('@') > 0: audit.domain = user[user.find(u'@')+1:] user = user[:user.find(u'@')] - results = callGData(service=audit, function=u'getEmailMonitors', user=user) + results = callGData(audit, u'getEmailMonitors', user=user) print sys.argv[4].lower()+u' has the following monitors:' print u'' for monitor in results: @@ -8305,7 +8304,7 @@ def doDeleteMonitor(): if source_user.find(u'@') > 0: audit.domain = source_user[source_user.find(u'@')+1:] source_user = source_user[:source_user.find(u'@')] - callGData(service=audit, function=u'deleteEmailMonitor', source_user=source_user, destination_user=destination_user) + callGData(audit, u'deleteEmailMonitor', source_user=source_user, destination_user=destination_user) def doRequestActivity(): user = sys.argv[4].lower() @@ -8313,7 +8312,7 @@ def doRequestActivity(): if user.find('@') > 0: audit.domain = user[user.find(u'@')+1:] user = user[:user.find('@')] - results = callGData(service=audit, function=u'createAccountInformationRequest', user=user) + results = callGData(audit, u'createAccountInformationRequest', user=user) print u'Request successfully submitted:' print u' Request ID: '+results[u'requestId'] print u' User: '+results[u'userEmailAddress'] @@ -8329,7 +8328,7 @@ def doStatusActivityRequests(): audit.domain = user[user.find('@')+1:] user = user[:user.find(u'@')] request_id = sys.argv[5].lower() - results = callGData(service=audit, function=u'getAccountInformationRequestStatus', user=user, request_id=request_id) + results = callGData(audit, u'getAccountInformationRequestStatus', user=user, request_id=request_id) print u'' print u' Request ID: '+results[u'requestId'] print u' User: '+results[u'userEmailAddress'] @@ -8344,7 +8343,7 @@ def doStatusActivityRequests(): pass print u'' except IndexError: - results = callGData(service=audit, function=u'getAllAccountInformationRequestsStatus') + results = callGData(audit, u'getAllAccountInformationRequestsStatus') print u'Current Activity Requests:' print u'' for request in results: @@ -8368,7 +8367,7 @@ def doDownloadActivityRequest(): if user.find(u'@') > 0: audit.domain = user[user.find(u'@')+1:] user = user[:user.find(u'@')] - results = callGData(service=audit, function=u'getAccountInformationRequestStatus', user=user, request_id=request_id) + results = callGData(audit, u'getAccountInformationRequestStatus', user=user, request_id=request_id) if results[u'status'] != u'COMPLETED': systemErrorExit(4, MESSAGE_REQUEST_NOT_COMPLETE.format(results[u'status'])) if int(results.get(u'numberOfFiles', u'0')) < 1: @@ -8407,7 +8406,7 @@ def doRequestExport(): if user.find('@') > 0: audit.domain = user[user.find(u'@')+1:] user = user[:user.find(u'@')] - results = callGData(service=audit, function=u'createMailboxExportRequest', user=user, begin_date=begin_date, end_date=end_date, include_deleted=include_deleted, + results = callGData(audit, u'createMailboxExportRequest', user=user, begin_date=begin_date, end_date=end_date, include_deleted=include_deleted, search_query=search_query, headers_only=headers_only) print u'Export request successfully submitted:' print u' Request ID: '+results['requestId'] @@ -8433,7 +8432,7 @@ def doDeleteExport(): audit.domain = user[user.find(u'@')+1:] user = user[:user.find(u'@')] request_id = sys.argv[5].lower() - callGData(service=audit, function=u'deleteMailboxExportRequest', user=user, request_id=request_id) + callGData(audit, u'deleteMailboxExportRequest', user=user, request_id=request_id) def doDeleteActivityRequest(): audit = getAuditObject() @@ -8442,7 +8441,7 @@ def doDeleteActivityRequest(): audit.domain = user[user.find(u'@')+1:] user = user[:user.find(u'@')] request_id = sys.argv[5].lower() - callGData(service=audit, function=u'deleteAccountInformationRequest', user=user, request_id=request_id) + callGData(audit, u'deleteAccountInformationRequest', user=user, request_id=request_id) def doStatusExportRequests(): audit = getAuditObject() @@ -8452,7 +8451,7 @@ def doStatusExportRequests(): audit.domain = user[user.find(u'@')+1:] user = user[:user.find(u'@')] request_id = sys.argv[5].lower() - results = callGData(service=audit, function=u'getMailboxExportRequestStatus', user=user, request_id=request_id) + results = callGData(audit, u'getMailboxExportRequestStatus', user=user, request_id=request_id) print u'' print u' Request ID: '+results[u'requestId'] print u' User: '+results[u'userEmailAddress'] @@ -8472,7 +8471,7 @@ def doStatusExportRequests(): except KeyError: pass except IndexError: - results = callGData(service=audit, function=u'getAllMailboxExportRequestsStatus') + results = callGData(audit, u'getAllMailboxExportRequestsStatus') print u'Current Export Requests:' print u'' for request in results: @@ -8501,7 +8500,7 @@ def doWatchExportRequest(): user = user[:user.find(u'@')] request_id = sys.argv[5].lower() while True: - results = callGData(service=audit, function=u'getMailboxExportRequestStatus', user=user, request_id=request_id) + results = callGData(audit, u'getMailboxExportRequestStatus', user=user, request_id=request_id) if results[u'status'] != u'PENDING': print u'status is %s. Sending email.' % results[u'status'] msg_txt = u"\n" @@ -8541,7 +8540,7 @@ def send_email(msg_subj, msg_txt, msg_rcpt=None): msg[u'To'] = msg_rcpt msg_string = msg.as_string() msg_raw = base64.urlsafe_b64encode(msg_string) - callGAPI(service=gmail.users().messages(), function=u'send', userId=sender_email, body={u'raw': msg_raw}) + callGAPI(gmail.users().messages(), u'send', userId=sender_email, body={u'raw': msg_raw}) def doDownloadExportRequest(): user = sys.argv[4].lower() @@ -8550,7 +8549,7 @@ def doDownloadExportRequest(): if user.find(u'@') > 0: audit.domain = user[user.find(u'@')+1:] user = user[:user.find(u'@')] - results = callGData(service=audit, function=u'getMailboxExportRequestStatus', user=user, request_id=request_id) + results = callGData(audit, u'getMailboxExportRequestStatus', user=user, request_id=request_id) if results[u'status'] != u'COMPLETED': systemErrorExit(4, MESSAGE_REQUEST_NOT_COMPLETE.format(results[u'status'])) if int(results.get(u'numberOfFiles', u'0')) < 1: @@ -8568,7 +8567,7 @@ def doDownloadExportRequest(): def doUploadAuditKey(): auditkey = sys.stdin.read() audit = getAuditObject() - callGData(service=audit, function=u'updatePGPKey', pgpkey=auditkey) + callGData(audit, u'updatePGPKey', pgpkey=auditkey) def getUsersToModify(entity_type=None, entity=None, silent=False, return_uids=False, member_type=None): got_uids = False @@ -8594,7 +8593,7 @@ def getUsersToModify(entity_type=None, entity=None, silent=False, return_uids=Fa if not silent: sys.stderr.write(u"Getting %s of %s (may take some time for large groups)..." % (member_type_message, group)) page_message = u'Got %%%%total_items%%%% %s...' % member_type_message - members = callGAPIpages(service=cd.members(), function=u'list', items=u'members', page_message=page_message, + members = callGAPIpages(cd.members(), u'list', u'members', page_message=page_message, groupKey=group, roles=member_type, fields=u'nextPageToken,members(email,id)') users = [] for member in members: @@ -8612,7 +8611,7 @@ def getUsersToModify(entity_type=None, entity=None, silent=False, return_uids=Fa if not silent: sys.stderr.write(u"Getting all users in the Google Apps organization (may take some time on a large domain)...\n") page_message = u'Got %%total_items%% users...' - members = callGAPIpages(service=cd.users(), function=u'list', items=u'users', page_message=page_message, + members = callGAPIpages(cd.users(), u'list', u'users', page_message=page_message, customer=GC_Values[GC_CUSTOMER_ID], fields=u'nextPageToken,users(primaryEmail,id,orgUnitPath)', query=u"orgUnitPath='%s'" % ou, maxResults=GC_Values[GC_USER_MAX_RESULTS]) for member in members: @@ -8634,7 +8633,7 @@ def getUsersToModify(entity_type=None, entity=None, silent=False, return_uids=Fa if not silent: sys.stderr.write(u"Getting all users in the Google Apps organization (may take some time on a large domain)...\n") page_message = u'Got %%total_items%% users..' - members = callGAPIpages(service=cd.users(), function=u'list', items=u'users', page_message=page_message, + members = callGAPIpages(cd.users(), u'list', u'users', page_message=page_message, customer=GC_Values[GC_CUSTOMER_ID], fields=u'nextPageToken,users(primaryEmail,id)', query=u"orgUnitPath='%s'" % ou, maxResults=GC_Values[GC_USER_MAX_RESULTS]) for member in members: @@ -8650,7 +8649,7 @@ def getUsersToModify(entity_type=None, entity=None, silent=False, return_uids=Fa if not silent: sys.stderr.write(u"Getting all users that match query %s (may take some time on a large domain)...\n" % entity) page_message = u'Got %%total_items%% users...' - members = callGAPIpages(service=cd.users(), function=u'list', items=u'users', page_message=page_message, + members = callGAPIpages(cd.users(), u'list', u'users', page_message=page_message, customer=GC_Values[GC_CUSTOMER_ID], fields=u'nextPageToken,users(primaryEmail,id)', query=entity, maxResults=GC_Values[GC_USER_MAX_RESULTS]) for member in members: @@ -8684,14 +8683,14 @@ def getUsersToModify(entity_type=None, entity=None, silent=False, return_uids=Fa entity = u'd:%s' % entity if entity_type in [u'courseparticipants', u'teachers']: page_message = u'Got %%total_items%% teachers...' - teachers = callGAPIpages(service=croom.courses().teachers(), function=u'list', items=u'teachers', page_message=page_message, courseId=entity) + teachers = callGAPIpages(croom.courses().teachers(), u'list', u'teachers', page_message=page_message, courseId=entity) for teacher in teachers: email = teacher[u'profile'].get(u'emailAddress', None) if email: users.append(email) if entity_type in [u'courseparticipants', u'students']: page_message = u'Got %%total_items%% students...' - students = callGAPIpages(service=croom.courses().students(), function=u'list', page_message=page_message, items=u'students', courseId=entity) + students = callGAPIpages(croom.courses().students(), u'list', u'students', page_message=page_message, courseId=entity) for student in students: email = student[u'profile'].get(u'emailAddress', None) if email: @@ -8703,7 +8702,7 @@ def getUsersToModify(entity_type=None, entity=None, silent=False, return_uids=Fa if not silent: sys.stderr.write(u"Getting all users in Google Apps account (may take some time on a large account)...\n") page_message = u'Got %%total_items%% users...' - all_users = callGAPIpages(service=cd.users(), function=u'list', items=u'users', page_message=page_message, + all_users = callGAPIpages(cd.users(), u'list', u'users', page_message=page_message, customer=GC_Values[GC_CUSTOMER_ID], fields=u'nextPageToken,users(primaryEmail,suspended,id)', maxResults=GC_Values[GC_USER_MAX_RESULTS]) for member in all_users: @@ -8717,7 +8716,7 @@ def getUsersToModify(entity_type=None, entity=None, silent=False, return_uids=Fa elif entity.lower() == u'cros': if not silent: sys.stderr.write(u"Getting all CrOS devices in Google Apps account (may take some time on a large account)...\n") - all_cros = callGAPIpages(service=cd.chromeosdevices(), function=u'list', items=u'chromeosdevices', + all_cros = callGAPIpages(cd.chromeosdevices(), u'list', u'chromeosdevices', customerId=GC_Values[GC_CUSTOMER_ID], fields=u'nextPageToken,chromeosdevices(deviceId)', maxResults=GC_Values[GC_DEVICE_MAX_RESULTS]) for member in all_cros: @@ -8747,7 +8746,7 @@ def getUsersToModify(entity_type=None, entity=None, silent=False, return_uids=Fa if return_uids and not got_uids: new_full_users = list() for user in full_users: - user_result = callGAPI(service=cd.users(), function=u'get', userKey=user, fields=u'id') + user_result = callGAPI(cd.users(), u'get', userKey=user, fields=u'id') new_full_users.append(user_result[u'id']) full_users = new_full_users return full_users @@ -8768,7 +8767,7 @@ def OAuthInfo(): access_token = credentials.access_token print u"\nOAuth File: %s" % GC_Values[GC_OAUTH2_TXT] oa2 = buildGAPIObject(u'oauth2') - token_info = callGAPI(service=oa2, function=u'tokeninfo', access_token=access_token) + token_info = callGAPI(oa2, u'tokeninfo', access_token=access_token) print u"Client ID: %s" % token_info[u'issued_to'] try: print u"Secret: %s" % credentials.client_secret