private string WriteAuthorizationHeader(WebParameterCollection parameters) { var sb = new StringBuilder("OAuth "); if (!IsNullOrBlank(Realm)) { sb.AppendFormat("realm=\"{0}\",", OAuthTools.UrlEncodeRelaxed(Realm)); } parameters.Sort((l, r) => l.Name.CompareTo(r.Name)); foreach (var parameter in parameters.Where(parameter => !IsNullOrBlank(parameter.Name) && !IsNullOrBlank(parameter.Value) && (parameter.Name.StartsWith("oauth_") || parameter.Name.StartsWith("x_auth_")))) { sb.AppendFormat("{0}=\"{1}\",", parameter.Name, parameter.Value); } sb.Remove(sb.Length - 1, 1); var authorization = sb.ToString(); return(authorization); }
/// <summary> /// Sorts a <see cref="WebParameterCollection"/> 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 WebParameterCollection SortParametersExcludingSignature(WebParameterCollection parameters) { var copy = new WebParameterCollection(parameters); var exclusions = copy.Where(n => EqualsIgnoreCase(n.Name, "oauth_signature")); copy.RemoveAll(exclusions); foreach (var parameter in copy) { parameter.Value = UrlEncodeStrict(parameter.Value); } copy.Sort((x, y) => x.Name.Equals(y.Name) ? x.Value.CompareTo(y.Value) : x.Name.CompareTo(y.Name)); return(copy); }
private static string WriteAuthorizationQuery(WebParameterCollection parameters) { var sb = new StringBuilder(); parameters.Sort((l, r) => l.Name.CompareTo(r.Name)); var count = 0; foreach (var parameter in parameters.Where(parameter => !IsNullOrBlank(parameter.Name) && !IsNullOrBlank(parameter.Value) && (parameter.Name.StartsWith("oauth_") || parameter.Name.StartsWith("x_auth_")))) { count++; var format = count < parameters.Count ? "{0}={1}&" : "{0}={1}"; sb.AppendFormat(format, parameter.Name, parameter.Value); } var authorization = sb.ToString(); return(authorization); }