private void AddAuthParameters(ICollection <WebParameter> parameters, string timestamp, string nonce) { var authParameters = new WebParameterCollection { new WebParameter("oauth_consumer_key", ConsumerKey, WebParameterType.Internal), new WebParameter("oauth_nonce", nonce, WebParameterType.Internal), new WebParameter("oauth_signature_method", SignatureProvider.Id, WebParameterType.Internal), new WebParameter("oauth_timestamp", timestamp, WebParameterType.Internal), new WebParameter("oauth_version", Version ?? "1.0", WebParameterType.Internal) }; if (!string.IsNullOrEmpty(Token)) { authParameters.Add(new WebParameter("oauth_token", Token, WebParameterType.Internal)); } if (!string.IsNullOrEmpty(CallbackUrl)) { authParameters.Add(new WebParameter("oauth_callback", CallbackUrl, WebParameterType.Internal)); } if (!string.IsNullOrEmpty(Verifier)) { authParameters.Add(new WebParameter("oauth_verifier", Verifier, WebParameterType.Internal)); } if (!string.IsNullOrEmpty(SessionHandle)) { authParameters.Add(new WebParameter("oauth_session_handle", SessionHandle, WebParameterType.Internal)); } foreach (var authParameter in authParameters) { parameters.Add(authParameter); } }
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 (!string.IsNullOrEmpty(Token)) { authParameters.Add(new WebPair("oauth_token", Token)); } if (!string.IsNullOrEmpty(CallbackUrl)) { authParameters.Add(new WebPair("oauth_callback", CallbackUrl)); } if (!string.IsNullOrEmpty(Verifier)) { authParameters.Add(new WebPair("oauth_verifier", Verifier)); } if (!string.IsNullOrEmpty(SessionHandle)) { authParameters.Add(new WebPair("oauth_session_handle", SessionHandle)); } foreach (var authParameter in authParameters) { parameters.Add(authParameter); } }
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", SignatureProvider.Id), new WebPair("oauth_timestamp", timestamp), new WebPair("oauth_version", Version ?? "1.0") }; if (!string.IsNullOrEmpty(Token)) { authParameters.Add(new WebPair("oauth_token", Token)); } if (!string.IsNullOrEmpty(CallbackUrl)) { authParameters.Add(new WebPair("oauth_callback", CallbackUrl)); } if (!string.IsNullOrEmpty(Verifier)) { authParameters.Add(new WebPair("oauth_verifier", Verifier)); } if (!string.IsNullOrEmpty(SessionHandle)) { authParameters.Add(new WebPair("oauth_session_handle", SessionHandle)); } foreach (var authParameter in authParameters) { parameters.Add(authParameter); } }
private void AddOAuthData(IRestClient client, IRestRequest request, OAuthWorkflow workflow) { var url = client.BuildUri(request, false).ToString(); OAuthWebQueryInfo oauth; var method = request.Method.ToString(); var parameters = new WebParameterCollection(); // include all GET and POST parameters before generating the signature // according to the RFC 5849 - The OAuth 1.0 Protocol // http://tools.ietf.org/html/rfc5849#section-3.4.1 // if this change causes trouble we need to introduce a flag indicating the specific OAuth implementation level, // or implement a seperate class for each OAuth version var useMultiPart = request.ContentCollectionMode == ContentCollectionMode.MultiPart || (request.ContentCollectionMode == ContentCollectionMode.MultiPartForFileParameters && (client.DefaultParameters.GetFileParameters().Any() || request.Parameters.GetFileParameters().Any())); var requestParameters = client.MergeParameters(request).OtherParameters.AsEnumerable(); var effectiveMethod = client.GetEffectiveHttpMethod(request); if (effectiveMethod == Method.GET) { requestParameters = requestParameters.Where(x => x.Type == ParameterType.GetOrPost || x.Type == ParameterType.QueryString); foreach (var p in requestParameters) { parameters.Add(new WebParameter(p.Name, p.Value.ToString(), WebParameterType.Query)); } } else if (!useMultiPart && effectiveMethod == Method.POST) { foreach (var p in requestParameters.Where(x => x.Type == ParameterType.QueryString)) { parameters.Add(new WebParameter(p.Name, p.Value.ToString(), WebParameterType.Query)); } foreach (var p in requestParameters.Where(x => x.Type == ParameterType.GetOrPost)) { parameters.Add(new WebParameter(p.Name, p.Value.ToString(), WebParameterType.Post)); } } else { // if we are sending a multipart request, only the "oauth_" parameters should be included in the signature foreach (var p in requestParameters.Where(p => p.Name.StartsWith("oauth_", StringComparison.Ordinal))) { parameters.Add(new WebParameter(p.Name, p.Value.ToString(), WebParameterType.Internal)); } } switch (Type) { case OAuthType.RequestToken: workflow.RequestTokenUrl = url; oauth = workflow.BuildRequestTokenInfo(method, parameters); break; case OAuthType.AccessToken: workflow.AccessTokenUrl = url; oauth = workflow.BuildAccessTokenInfo(method, parameters); break; case OAuthType.ClientAuthentication: workflow.AccessTokenUrl = url; oauth = workflow.BuildClientAuthAccessTokenInfo(method, parameters); break; case OAuthType.ProtectedResource: oauth = workflow.BuildProtectedResourceInfo(method, parameters, url); break; default: throw new ArgumentOutOfRangeException(); } switch (ParameterHandling) { case OAuthParameterHandling.HttpAuthorizationHeader: parameters.Add("oauth_signature", oauth.Signature, WebParameterType.Internal); request.AddHeader("Authorization", GetAuthorizationHeader(parameters)); break; case OAuthParameterHandling.UrlOrPostParameters: parameters.Add("oauth_signature", oauth.Signature, WebParameterType.Internal); foreach (var parameter in parameters.Where( parameter => !string.IsNullOrEmpty(parameter.Name) && (parameter.Name.StartsWith("oauth_") || parameter.Name.StartsWith("x_auth_")))) { var v = parameter.Value; v = Uri.UnescapeDataString(v.Replace('+', ' ')); request.AddOrUpdateParameter(parameter.Name, v); } break; default: throw new ArgumentOutOfRangeException(); } }