/// <summary> /// Sorts a collection of key-value pairs by name, and then value if equal, /// concatenating them into a single string. This string should be encoded /// prior to, or after normalization is run. /// </summary> /// <param name="parameters"></param> /// <returns></returns> static string NormalizeRequestParameters(WebPairCollection parameters) => string.Join("&", SortParametersExcludingSignature(parameters));
/// <summary> /// Sorts a <see cref="WebPairCollection" /> by name, and then value if equal. /// </summary> /// <param name="parameters">A collection of parameters to sort</param> /// <returns>A sorted parameter collection</returns> public static IEnumerable <string> SortParametersExcludingSignature(WebPairCollection parameters) => parameters .Where(x => !x.Name.EqualsIgnoreCase("oauth_signature")) .Select(x => new WebPair(UrlEncodeStrict(x.Name), UrlEncodeStrict(x.Value), x.Encode)) .OrderBy(x => x, WebPair.Comparer) .Select(x => $"{x.Name}={x.Value}");
public virtual void AddRange(WebPairCollection collection) { AddCollection(collection); }