in gslib/commands/signurl.py [0:0]
def _ParseAndCheckSubOpts(self):
# Default argument values
delta = None
method = 'GET'
content_type = ''
passwd = None
region = _AUTO_DETECT_REGION
use_service_account = False
billing_project = None
for o, v in self.sub_opts:
# TODO(PY3-ONLY): Delete this if block.
if six.PY2:
v = v.decode(sys.stdin.encoding or constants.UTF8)
if o == '-d':
if delta is not None:
delta += _DurationToTimeDelta(v)
else:
delta = _DurationToTimeDelta(v)
elif o == '-m':
method = v
elif o == '-c':
content_type = v
elif o == '-p':
passwd = v
elif o == '-r':
region = v
elif o == '-u' or o == '--use-service-account':
use_service_account = True
elif o == '-b':
billing_project = v
else:
self.RaiseInvalidArgumentException()
if delta is None:
delta = timedelta(hours=1)
else:
if use_service_account and delta > _MAX_EXPIRATION_TIME_WITH_MINUS_U:
# This restriction comes from the IAM SignBlob API. The SignBlob
# API uses a system-managed key which can guarantee validation only
# up to 12 hours. b/156160482#comment4
raise CommandException(
'Max valid duration allowed is %s when -u flag is used. For longer'
' duration, consider using the private-key-file instead of the -u'
' option.' % _MAX_EXPIRATION_TIME_WITH_MINUS_U)
elif delta > _MAX_EXPIRATION_TIME:
raise CommandException('Max valid duration allowed is '
'%s' % _MAX_EXPIRATION_TIME)
if method not in ['GET', 'PUT', 'DELETE', 'HEAD', 'RESUMABLE']:
raise CommandException('HTTP method must be one of'
'[GET|HEAD|PUT|DELETE|RESUMABLE]')
if not use_service_account and len(self.args) < 2:
raise CommandException(
'The command requires a key file argument and one or more '
'URL arguments if the --use-service-account flag is missing. '
'Run `gsutil help signurl` for more info')
if use_service_account and billing_project:
raise CommandException(
'Specifying both the -b and --use-service-account options together is'
'invalid.')
return method, delta, content_type, passwd, region, use_service_account, billing_project