private string NormalizeUrl(string url) { int questionIndex = url.IndexOf('?'); if (questionIndex == -1) { return(url); } var parameters = url.Substring(questionIndex + 1); var result = new StringBuilder(); result.Append(url.Substring(0, questionIndex + 1)); bool hasQueryParameters = false; if (!String.IsNullOrEmpty(parameters)) { string[] parts = parameters.Split('&'); hasQueryParameters = parts.Length > 0; foreach (var part in parts) { var nameValue = part.Split('='); result.Append(nameValue[0] + "="); if (nameValue.Length == 2) { result.Append(OAuthUtils.UrlEncode(nameValue[1])); } result.Append("&"); } if (hasQueryParameters) { result = result.Remove(result.Length - 1, 1); } } return(result.ToString()); }
public override string ToString() { var sb = new StringBuilder(); sb.Append("OAuth "); sb.AppendFormat("realm=\"{0}\", ", Realm); sb.AppendFormat("{0}=\"{1}\", ", OAuthProtocolParameter.ConsumerKey.GetStringValue(), OAuthUtils.UrlEncode(ConsumerKey)); sb.AppendFormat("{0}=\"{1}\", ", OAuthProtocolParameter.SignatureMethod.GetStringValue(), SignatureMethod); sb.AppendFormat("{0}=\"{1}\", ", OAuthProtocolParameter.Signature.GetStringValue(), OAuthUtils.UrlEncode(Signature)); sb.AppendFormat("{0}=\"{1}\", ", OAuthProtocolParameter.Timestamp.GetStringValue(), Timestamp); sb.AppendFormat("{0}=\"{1}\", ", OAuthProtocolParameter.Nounce.GetStringValue(), OAuthUtils.UrlEncode(Nounce)); sb.AppendFormat("{0}=\"{1}\", ", OAuthProtocolParameter.Version.GetStringValue(), Version); if (!String.IsNullOrEmpty(Callback)) { sb.AppendFormat("{0}=\"{1}\", ", OAuthProtocolParameter.Callback.GetStringValue(), OAuthUtils.UrlEncode(Callback)); } if (!String.IsNullOrEmpty(Token)) { sb.AppendFormat("{0}=\"{1}\", ", OAuthProtocolParameter.Token.GetStringValue(), OAuthUtils.UrlEncode(Token)); } if (!String.IsNullOrEmpty(Verifier)) { sb.AppendFormat("{0}=\"{1}\", ", OAuthProtocolParameter.Verifier.GetStringValue(), OAuthUtils.UrlEncode(Verifier)); } sb = sb.Remove(sb.Length - 2, 2); return(sb.ToString()); }