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);
            }
        }
Exemple #2
0
        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();
            }
        }