in src/AlibabaCloud.OSS.V2/Signer/SignerV1.cs [222:253]
private static string CanonicalizedResource(
string resourcePath,
IDictionary<string, string> parameters,
IList<string>? subResource
)
{
var canonicalizedResource = new StringBuilder();
canonicalizedResource.Append(resourcePath);
var parameterNames = new List<string>(parameters.Keys);
parameterNames.Sort();
var separator = '?';
foreach (var paramName in parameterNames)
{
if (!(ParametersToSign.Contains(paramName) ||
paramName.StartsWith("x-oss-") ||
(subResource != null && subResource.Contains(paramName))))
continue;
canonicalizedResource.Append(separator);
canonicalizedResource.Append(paramName);
var paramValue = parameters[paramName];
if (!string.IsNullOrEmpty(paramValue))
canonicalizedResource.Append("=").Append(paramValue);
separator = '&';
}
return canonicalizedResource.ToString();
}