public function buildCanonicalizedResource()

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;
    }