in alibabacloud-gateway-oss/php/src/Client.php [550:605]
public function buildCanonicalizedResource($pathname, $query){
$subResourcesMap = [];
$canonicalizedResource = $pathname;
if (!Utils::empty_($pathname)) {
$paths = StringUtil::split($pathname, "?", 2);
$canonicalizedResource = @$paths[0];
if (Utils::equalNumber(ArrayUtil::size($paths), 2)) {
$subResources = StringUtil::split(@$paths[1], "&", null);
foreach($subResources as $sub){
$hasExcepts = false;
foreach($this->_except_signed_params as $excepts){
if (StringUtil::contains($sub, $excepts)) {
$hasExcepts = true;
}
}
if (!$hasExcepts) {
$item = StringUtil::split($sub, "=", null);
$key = @$item[0];
$value = null;
if (Utils::equalNumber(ArrayUtil::size($item), 2)) {
$value = @$item[1];
}
// for go : subResourcesMap[tea.StringValue(key)] = value
$subResourcesMap[$key] = $value;
}
}
}
}
$subResourcesArray = MapUtil::keySet($subResourcesMap);
$newQueryList = $subResourcesArray;
if (!Utils::isUnset($query)) {
$queryList = MapUtil::keySet($query);
$newQueryList = ArrayUtil::concat($queryList, $subResourcesArray);
}
$sortedParams = ArrayUtil::ascSort($newQueryList);
$separator = "?";
foreach($sortedParams as $paramName){
if (ArrayUtil::contains($this->_default_signed_params, $paramName)) {
$canonicalizedResource = "" . $canonicalizedResource . "" . $separator . "" . $paramName . "";
if (!Utils::isUnset($query) && !Utils::isUnset(@$query[$paramName])) {
$canonicalizedResource = "" . $canonicalizedResource . "=" . @$query[$paramName] . "";
}
else if (!Utils::isUnset(@$subResourcesMap[$paramName])) {
$canonicalizedResource = "" . $canonicalizedResource . "=" . @$subResourcesMap[$paramName] . "";
}
}
else if (ArrayUtil::contains($subResourcesArray, $paramName)) {
$canonicalizedResource = "" . $canonicalizedResource . "" . $separator . "" . $paramName . "";
if (!Utils::isUnset(@$subResourcesMap[$paramName])) {
$canonicalizedResource = "" . $canonicalizedResource . "=" . @$subResourcesMap[$paramName] . "";
}
}
$separator = "&";
}
return $canonicalizedResource;
}