Map / to %2F in group email address for Group Settings API (#1288)

* Map / to %2F in group email address for Group Settings API

* Make update deviceuserstate consistent with other deviceuser commands

gam update deviceuserstate [id] <DeviceUserID> ...
This commit is contained in:
Ross Scroggs
2020-12-06 17:56:49 -08:00
committed by GitHub
parent 5a1f237b30
commit cc60095344
2 changed files with 16 additions and 10 deletions

View File

@@ -135,12 +135,14 @@ def update_state():
client_id = f'{customer}-gam' client_id = f'{customer}-gam'
body = {} body = {}
i = 3 i = 3
deviceuser = sys.argv[i]
if deviceuser == 'id':
i += 1
deviceuser = sys.argv[i]
i += 1
while i < len(sys.argv): while i < len(sys.argv):
myarg = sys.argv[i].lower().replace('_', '') myarg = sys.argv[i].lower().replace('_', '')
if myarg == 'id': if myarg == 'clientid':
deviceuser = sys.argv[i+1]
i += 2
elif myarg == 'clientid':
client_id = f'{customer}-{sys.argv[i+1]}' client_id = f'{customer}-{sys.argv[i+1]}'
i += 2 i += 2
elif myarg in ['assettag', 'assettags']: elif myarg in ['assettag', 'assettags']:

View File

@@ -15,6 +15,10 @@ def GroupIsAbuseOrPostmaster(emailAddr):
return emailAddr.startswith('abuse@') or emailAddr.startswith('postmaster@') return emailAddr.startswith('abuse@') or emailAddr.startswith('postmaster@')
def mapGroupEmailForSettings(emailAddr):
return emailAddr.replace('/', '%2F')
def create(): def create():
cd = gapi_directory.build() cd = gapi_directory.build()
body = {'email': gam.normalizeEmailAddressOrUID(sys.argv[3], noUid=True)} body = {'email': gam.normalizeEmailAddressOrUID(sys.argv[3], noUid=True)}
@@ -67,7 +71,7 @@ def create():
gapi_errors.ErrorReason.SERVICE_LIMIT, gapi_errors.ErrorReason.SERVICE_LIMIT,
gapi_errors.ErrorReason.NOT_FOUND gapi_errors.ErrorReason.NOT_FOUND
], ],
groupUniqueId=body['email'], groupUniqueId=mapGroupEmailForSettings(body['email']),
fields='*') fields='*')
if current_settings is not None: if current_settings is not None:
gs_body = dict( gs_body = dict(
@@ -75,7 +79,7 @@ def create():
if gs_body: if gs_body:
gapi.call(gs.groups(), gapi.call(gs.groups(),
'update', 'update',
groupUniqueId=body['email'], groupUniqueId=mapGroupEmailForSettings(body['email']),
retry_reasons=[ retry_reasons=[
gapi_errors.ErrorReason.SERVICE_LIMIT, gapi_errors.ErrorReason.SERVICE_LIMIT,
gapi_errors.ErrorReason.NOT_FOUND gapi_errors.ErrorReason.NOT_FOUND
@@ -170,7 +174,7 @@ def info(group_name=None):
'get', 'get',
throw_reasons=[gapi_errors.ErrorReason.AUTH_ERROR], throw_reasons=[gapi_errors.ErrorReason.AUTH_ERROR],
retry_reasons=[gapi_errors.ErrorReason.SERVICE_LIMIT], retry_reasons=[gapi_errors.ErrorReason.SERVICE_LIMIT],
groupUniqueId=basic_info['email'] groupUniqueId=mapGroupEmailForSettings(basic_info['email'])
) # Use email address retrieved from cd since GS API doesn't support uid ) # Use email address retrieved from cd since GS API doesn't support uid
if settings is None: if settings is None:
settings = {} settings = {}
@@ -589,7 +593,7 @@ def print_():
gapi_errors.ErrorReason.SERVICE_LIMIT, gapi_errors.ErrorReason.SERVICE_LIMIT,
gapi_errors.ErrorReason.INVALID gapi_errors.ErrorReason.INVALID
], ],
groupUniqueId=groupEmail, groupUniqueId=mapGroupEmailForSettings(groupEmail),
fields=gsfields) fields=gsfields)
if settings: if settings:
for key in settings: for key in settings:
@@ -1174,7 +1178,7 @@ def update():
gs.groups(), gs.groups(),
'get', 'get',
retry_reasons=[gapi_errors.ErrorReason.SERVICE_LIMIT], retry_reasons=[gapi_errors.ErrorReason.SERVICE_LIMIT],
groupUniqueId=group, groupUniqueId=mapGroupEmailForSettings(group),
fields='*') fields='*')
if current_settings is not None: if current_settings is not None:
gs_body = dict( gs_body = dict(
@@ -1185,7 +1189,7 @@ def update():
gs.groups(), gs.groups(),
'update', 'update',
retry_reasons=[gapi_errors.ErrorReason.SERVICE_LIMIT], retry_reasons=[gapi_errors.ErrorReason.SERVICE_LIMIT],
groupUniqueId=group, groupUniqueId=mapGroupEmailForSettings(group),
body=gs_body) body=gs_body)
print(f'updated group {group}') print(f'updated group {group}')