protected async Task <TumblrCredentials> GetAccessToken(TumblrClientCredentials clientCredentials, string webAuthResultResponseData, string tokenSecret)
        {
            string responseData = webAuthResultResponseData.Substring(webAuthResultResponseData.IndexOf("oauth_token", StringComparison.Ordinal));

            if (responseData.EndsWith("#_=_"))
            {
                responseData = responseData.Substring(0, responseData.Length - 4);
            }
            string requestToken = null, oauthVerifier = null;

            String[] keyValPairs = responseData.Split('&');

            foreach (string t in keyValPairs)
            {
                String[] splits = t.Split('=');
                switch (splits[0])
                {
                case "oauth_token":
                    requestToken = splits[1];
                    break;

                case "oauth_verifier":
                    oauthVerifier = splits[1];
                    break;
                }
            }

            var authorizer = new OAuthAuthorizer(clientCredentials);

            var accessToken = await authorizer.GetAccessToken(AccessTokenUrl, new RequestToken(requestToken, tokenSecret), oauthVerifier).ConfigureAwait(false);

            return(new TumblrCredentials(accessToken.Token.Key, accessToken.Token.Secret));
        }
        public override DelegatingHandler Setup(TumblrClientDetail clientDetail, TumblrClientCredentials client, HttpMessageHandler handler)
        {
            if (string.IsNullOrWhiteSpace(AccessToken))
            {
                clientDetail.UseApiKey = true;
            }

            return(handler == null ? new OAuth2HeaderHandler(this) : new OAuth2HeaderHandler(this, handler));
        }
示例#3
0
        public override DelegatingHandler Setup(TumblrClientDetail clientDetail, TumblrClientCredentials client, HttpMessageHandler handler)
        {
            if (string.IsNullOrWhiteSpace(Key) || string.IsNullOrWhiteSpace(Secret))
            {
                clientDetail.UseApiKey = true;
            }
            else
            {
                clientDetail.AccessToken = new AccessToken(Key, Secret);
            }

            return(handler == null
                ? new OAuthMessageHandler(client, clientDetail.AccessToken)
                : new OAuthMessageHandler(handler, client, clientDetail.AccessToken));
        }
        public TumblrClient(HttpMessageHandler handler, TumblrClientCredentials client, TumblrBaseCredentials token)
        {
            if (client == null)
            {
                throw new ArgumentNullException(nameof(client));
            }

            ClientDetail = new TumblrClientDetail
            {
                ClientCreds = client
            };

            if (token != null)
            {
                handler = token.Setup(ClientDetail, client, handler);
            }
            else
            {
                ClientDetail.UseApiKey = true;
            }

            ClientDetail.Client  = handler == null ? new HttpClient() : new HttpClient(handler);
            ClientDetail.OnError = HandleError;
        }
 public TumblrClient(TumblrClientCredentials client, TumblrBaseCredentials token) : this(null, client, token)
 {
 }
 public TumblrClient(HttpMessageHandler handler, TumblrClientCredentials client) : this(handler, client,
                                                                                        null)
 {
 }
 public TumblrClient(TumblrClientCredentials client) : this(null, client)
 {
 }
示例#8
0
 public abstract DelegatingHandler Setup(TumblrClientDetail clientDetail, TumblrClientCredentials client,
                                         HttpMessageHandler handler);
 protected TumblrLogin(TumblrClientCredentials consumer, Uri callbackUri, Func <Uri, Uri, Task <string> > webBrokerCall)
 {
     Consumer = consumer;
     ContactWebAuthenticationBroker = webBrokerCall;
     CallbackUri = callbackUri;
 }