public string ComposeStringToSign(MethodType? method, string uriPattern, ISigner signer,
Dictionary<string, string> queries, Dictionary<string, string> headers, Dictionary<string, string> paths)
{
var sortedDictionary = SortDictionary(queries);
StringBuilder canonicalizedQueryString = new StringBuilder();
foreach (var p in sortedDictionary)
{
canonicalizedQueryString.Append("&")
.Append(AcsURLEncoder.PercentEncode(p.Key)).Append("=")
.Append(AcsURLEncoder.PercentEncode(p.Value));
}
StringBuilder stringToSign = new StringBuilder();
stringToSign.Append(method.ToString());
stringToSign.Append(SEPARATOR);
stringToSign.Append(AcsURLEncoder.PercentEncode("/"));
stringToSign.Append(SEPARATOR);
stringToSign.Append(AcsURLEncoder.PercentEncode(
canonicalizedQueryString.ToString().Substring(1)));
return stringToSign.ToString();
}