public WebParameterCollection GetAllHeaders() { var headers = new WebParameterCollection(); var parameters = Headers.AllKeys.Select(key => new WebPair(key, Headers[key])); foreach (var parameter in parameters) { headers.Add(parameter.Name, parameter.Value); } return headers; }
private void AddAuthParameters(ICollection<WebPair> parameters, string timestamp, string nonce) { var authParameters = new WebParameterCollection { new WebPair("oauth_consumer_key", ConsumerKey), new WebPair("oauth_nonce", nonce), new WebPair("oauth_signature_method", SignatureMethod.ToRequestValue()), new WebPair("oauth_timestamp", timestamp), new WebPair("oauth_version", Version ?? "1.0") }; if (!Token.IsNullOrBlank()) { authParameters.Add(new WebPair("oauth_token", Token)); } if (!CallbackUrl.IsNullOrBlank()) { authParameters.Add(new WebPair("oauth_callback", CallbackUrl)); } if (!Verifier.IsNullOrBlank()) { authParameters.Add(new WebPair("oauth_verifier", Verifier)); } if(!SessionHandle.IsNullOrBlank()) { authParameters.Add(new WebPair("oauth_session_handle", SessionHandle)); } foreach (var authParameter in authParameters) { parameters.Add(authParameter); } }
public virtual OAuthWebQueryInfo BuildProtectedResourceInfo(WebMethod method, WebParameterCollection parameters, string url) { ValidateProtectedResourceState(); if (parameters == null) { parameters = new WebParameterCollection(); } // Include url parameters in query pool var uri = new Uri(url); #if !SILVERLIGHT var urlParameters = System.Compat.Web.HttpUtility.ParseQueryString(uri.Query); #else var urlParameters = uri.Query.ParseQueryString(); #endif #if !SILVERLIGHT foreach (var parameter in urlParameters.AllKeys) #else foreach (var parameter in urlParameters.Keys) #endif { switch (method) { case WebMethod.Post: parameters.Add(new HttpPostParameter(parameter, urlParameters[parameter])); break; default: parameters.Add(parameter, urlParameters[parameter]); break; } } var timestamp = OAuthTools.GetTimestamp(); var nonce = OAuthTools.GetNonce(); // [DC] Make a copy of the parameters so that the signature double-encode isn't used var copy = new WebParameterCollection(); foreach(var parameter in parameters) { copy.Add(new WebPair(parameter.Name, parameter.Value)); } AddAuthParameters(copy, timestamp, nonce); // [DC] Escape parameters at this point; do not escape again if recalculating var signatureBase = OAuthTools.ConcatenateRequestElements(method, url, copy); var signature = OAuthTools.GetSignature( SignatureMethod, SignatureTreatment, signatureBase, ConsumerSecret, TokenSecret ); var info = new OAuthWebQueryInfo { WebMethod = method, ParameterHandling = ParameterHandling, ConsumerKey = ConsumerKey, Token = Token, SignatureMethod = SignatureMethod.ToRequestValue(), SignatureTreatment = SignatureTreatment, Signature = signature, Timestamp = timestamp, Nonce = nonce, Version = Version ?? "1.0", Callback = CallbackUrl, UserAgent = "Hammock", ConsumerSecret = ConsumerSecret, TokenSecret = TokenSecret }; return info; }