in alibabacloud-gateway-oss/python2/alibabacloud_gateway_oss/client.py [0:0]
def build_canonicalized_resource(self, pathname, query):
sub_resources_map = {}
canonicalized_resource = pathname
if not UtilClient.empty(pathname):
paths = StringClient.split(pathname, '?', 2)
canonicalized_resource = paths[0]
if UtilClient.equal_number(ArrayClient.size(paths), 2):
sub_resources = StringClient.split(paths[1], '&', None)
for sub in sub_resources:
has_excepts = False
for excepts in self._except_signed_params:
if StringClient.contains(sub, excepts):
has_excepts = True
if not has_excepts:
item = StringClient.split(sub, '=', None)
key = item[0]
value = None
if UtilClient.equal_number(ArrayClient.size(item), 2):
value = item[1]
# for go : subResourcesMap[tea.StringValue(key)] = value
sub_resources_map[key] = value
sub_resources_array = MapClient.key_set(sub_resources_map)
new_query_list = sub_resources_array
if not UtilClient.is_unset(query):
query_list = MapClient.key_set(query)
new_query_list = ArrayClient.concat(query_list, sub_resources_array)
sorted_params = ArrayClient.asc_sort(new_query_list)
separator = '?'
for param_name in sorted_params:
if ArrayClient.contains(self._default_signed_params, param_name):
canonicalized_resource = '%s%s%s' % (TeaConverter.to_unicode(canonicalized_resource), TeaConverter.to_unicode(separator), TeaConverter.to_unicode(param_name))
if not UtilClient.is_unset(query) and not UtilClient.is_unset(query.get(param_name)):
canonicalized_resource = '%s=%s' % (TeaConverter.to_unicode(canonicalized_resource), TeaConverter.to_unicode(query.get(param_name)))
elif not UtilClient.is_unset(sub_resources_map.get(param_name)):
canonicalized_resource = '%s=%s' % (TeaConverter.to_unicode(canonicalized_resource), TeaConverter.to_unicode(sub_resources_map.get(param_name)))
elif ArrayClient.contains(sub_resources_array, param_name):
canonicalized_resource = '%s%s%s' % (TeaConverter.to_unicode(canonicalized_resource), TeaConverter.to_unicode(separator), TeaConverter.to_unicode(param_name))
if not UtilClient.is_unset(sub_resources_map.get(param_name)):
canonicalized_resource = '%s=%s' % (TeaConverter.to_unicode(canonicalized_resource), TeaConverter.to_unicode(sub_resources_map.get(param_name)))
separator = '&'
return canonicalized_resource