diff --git a/src/gam/__init__.py b/src/gam/__init__.py index 05c909a4..5e32219a 100755 --- a/src/gam/__init__.py +++ b/src/gam/__init__.py @@ -940,6 +940,9 @@ def buildGAPIObject(api): GC_Values[GC_CUSTOMER_ID] = MY_CUSTOMER else: GC_Values[GC_DOMAIN] = _getValueFromOAuth('hd', credentials=credentials) + if GC_Values[GC_DOMAIN] == 'Unknown': + GC_Values[GC_DOMAIN] = getEmailAddressDomain( + _getValueFromOAuth('email')) if not GC_Values[GC_CUSTOMER_ID]: GC_Values[GC_CUSTOMER_ID] = MY_CUSTOMER return service @@ -1725,7 +1728,7 @@ def doPrintDomains(): results = gapi.call(cd.domains(), 'list', customer=GC_Values[GC_CUSTOMER_ID]) - for domain in results['domains']: + for domain in results.get('domains', []): domain_attributes = {} domain['type'] = ['secondary', 'primary'][domain['isPrimary']] for attr in domain: @@ -10443,15 +10446,21 @@ def doGetUserInfo(user_email=None): for alias in user['nonEditableAliases']: print(f' {alias}') if getGroups: - groups = gapi.get_all_pages(cd.groups(), - 'list', - 'groups', - userKey=user_email, - fields='groups(name,email),nextPageToken') - if groups: - print(f'Groups: ({len(groups)})') - for group in groups: - print(f' {group["name"]} <{group["email"]}>') + throw_reasons = [gapi_errors.ErrorReason.FORBIDDEN] + try: + groups = gapi.get_all_pages( + cd.groups(), + 'list', + 'groups', + userKey=user_email, + fields='groups(name,email),nextPageToken', + throw_reasons=throw_reasons) + if groups: + print(f'Groups: ({len(groups)})') + for group in groups: + print(f' {group["name"]} <{group["email"]}>') + except gapi.errors.GapiForbiddenError: + print('No access to show user groups.') if getLicenses: print('Licenses:') lic = buildGAPIObject('licensing') diff --git a/src/gam/gapi/directory/customer.py b/src/gam/gapi/directory/customer.py index baae7088..dbf02dd1 100644 --- a/src/gam/gapi/directory/customer.py +++ b/src/gam/gapi/directory/customer.py @@ -14,11 +14,16 @@ def doGetCustomerInfo(): customerKey=GC_Values[GC_CUSTOMER_ID]) print(f'Customer ID: {customer_info["id"]}') print(f'Primary Domain: {customer_info["customerDomain"]}') - result = gapi.call(cd.domains(), - 'get', - customer=customer_info['id'], - domainName=customer_info['customerDomain'], - fields='verified') + try: + result = gapi.call( + cd.domains(), + 'get', + customer=customer_info['id'], + domainName=customer_info['customerDomain'], + fields='verified', + throw_reasons=[gapi.errors.ErrorReason.DOMAIN_NOT_FOUND]) + except gapi.errors.GapiDomainNotFoundError: + result = {'verified': False} print(f'Primary Domain Verified: {result["verified"]}') # If customer has changed primary domain customerCreationTime is date # of current primary being added, not customer create date. @@ -66,7 +71,9 @@ def doGetCustomerInfo(): customerId = None rep = gapi_reports.buildGAPIObject() usage = None - throw_reasons = [gapi.errors.ErrorReason.INVALID] + throw_reasons = [ + gapi.errors.ErrorReason.INVALID, gapi.errors.ErrorReason.FORBIDDEN + ] while True: try: result = gapi.call(rep.customerUsageReports(), @@ -78,6 +85,8 @@ def doGetCustomerInfo(): except gapi.errors.GapiInvalidError as e: tryDate = gapi_reports._adjust_date(str(e)) continue + except gapi.errors.GapiForbiddenError: + return warnings = result.get('warnings', []) fullDataRequired = ['accounts'] usage = result.get('usageReports') diff --git a/src/gam/var.py b/src/gam/var.py index a7a41587..28ff5f98 100644 --- a/src/gam/var.py +++ b/src/gam/var.py @@ -130,7 +130,7 @@ SKUS = { '1010060001': { 'product': 'Google-Apps', 'aliases': ['d4e', 'driveenterprise', 'drive4enterprise'], - 'displayName': 'Drive Enterprise' + 'displayName': 'G Suite Essentials' }, 'Google-Drive-storage-20GB': { 'product': 'Google-Drive-storage',