コード例 #1
0
        void AccessTokenQuery_QueryResponse(object sender, WebQueryResponseEventArgs e)
        {
            try
            {
                StreamReader reader      = new StreamReader(e.Response);
                string       strResponse = reader.ReadToEnd();
                var          parameters  = MainUtil.GetQueryParameters(strResponse);
                accessToken       = parameters["oauth_token"];
                accessTokenSecret = parameters["oauth_token_secret"];
                userID            = parameters["user_id"];
                userScreenName    = parameters["screen_name"];

                MainUtil.SetKeyValue <string>("AccessToken", accessToken);
                MainUtil.SetKeyValue <string>("AccessTokenSecret", accessTokenSecret);
                MainUtil.SetKeyValue <string>("ScreenName", userScreenName);
                MainUtil.SetKeyValue <string>("UserID", userID);

                userLoggedIn();

                Dispatcher.BeginInvoke(() =>
                {
                    AutenticaChangeColor();
                    //MessageBox.Show("Você está autenticado! Agora escolha a cor e acompanhe no twitter a conta @iot4dx", "MICROSOFT @ TDC 2014", MessageBoxButton.OK);
                });
            }
            catch (Exception ex)
            {
                Dispatcher.BeginInvoke(() =>
                {
                    MessageBox.Show(ex.Message);
                });
            }
        }
コード例 #2
0
        public void RefreshTokenQuery_QueryResponse(object sender, WebQueryResponseEventArgs e)
        {
            try
            {
                StreamReader reader      = new StreamReader(e.Response);
                string       strResponse = reader.ReadToEnd();
                var          parameters  = MainUtil.GetQueryParameters(strResponse);
                accessToken       = parameters["oauth_token"];
                accessTokenSecret = parameters["oauth_token_secret"];
                TimeSpan t = (DateTime.UtcNow - new DateTime(1970, 1, 1));

                MainUtil.SetKeyValue <string>("AccessToken", accessToken);
                MainUtil.SetKeyValue <string>("AccessTokenSecret", accessTokenSecret);
                MainUtil.SetKeyValue <string>("Timestamp", t.TotalSeconds.ToString());

                userLoggedIn();
            }
            catch (Exception ex)
            {
                Dispatcher.BeginInvoke(() =>
                {
                    MessageBox.Show(ex.Message);
                });
            }
        }
コード例 #3
0
        void AccessTokenQuery_QueryResponse(object sender, WebQueryResponseEventArgs e)
        {
            try
            {
                var parameters = TwitterHelper.GetQueryParameters((new StreamReader(e.Response)).ReadToEnd());
                accessToken       = parameters["oauth_token"];
                accessTokenSecret = parameters["oauth_token_secret"];
                userID            = parameters["user_id"];
                userScreenName    = parameters["screen_name"];

                TwitterHelper.SetKeyValue <string>("AccessToken", accessToken);
                TwitterHelper.SetKeyValue <string>("AccessTokenSecret", accessTokenSecret);
                TwitterHelper.SetKeyValue <string>("ScreenName", userScreenName);

                Dispatcher.BeginInvoke(() =>
                {
                    var SignInMenuItem       = (Microsoft.Phone.Shell.ApplicationBarMenuItem) this.ApplicationBar.MenuItems[0];
                    SignInMenuItem.IsEnabled = false;

                    var SignOutMenuItem       = (Microsoft.Phone.Shell.ApplicationBarMenuItem) this.ApplicationBar.MenuItems[1];
                    SignOutMenuItem.IsEnabled = true;

                    var tweetButton       = (Microsoft.Phone.Shell.ApplicationBarIconButton) this.ApplicationBar.Buttons[0];
                    tweetButton.IsEnabled = true;
                });
                this.postMessageToTwitter();
            }
            catch (Exception ex)
            {
                Dispatcher.BeginInvoke(() =>
                {
                    MessageBox.Show(ex.Message);
                });
            }
        }
コード例 #4
0
        void AccessTokenQuery_QueryResponse(object sender, WebQueryResponseEventArgs e)
        {
            try
            {
                StreamReader reader      = new StreamReader(e.Response);
                string       strResponse = reader.ReadToEnd();
                var          parameters  = MainUtil.GetQueryParameters(strResponse);
                accessToken       = parameters["oauth_token"];
                accessTokenSecret = parameters["oauth_token_secret"];
                userID            = parameters["user_id"];
                userScreenName    = parameters["screen_name"];

                MainUtil.SetKeyValue <string>("AccessToken", accessToken);
                MainUtil.SetKeyValue <string>("AccessTokenSecret", accessTokenSecret);
                MainUtil.SetKeyValue <string>("ScreenName", userScreenName);
                Dispatcher.BeginInvoke(() =>
                {
                    MessageBox.Show("Access Granted for " + userScreenName);
                    App.twaccesstokenkey    = accessToken;
                    App.twaccesstokensecret = accessTokenSecret;
                    App.writeBackToken();
                    NavigationService.GoBack();
                });
            }
            catch (Exception ex)
            {
                Dispatcher.BeginInvoke(() =>
                {
                    MessageBox.Show("2)" + ex.ToString());
                });
            }
        }
コード例 #5
0
 void requestTokenQuery_QueryResponse(object sender, WebQueryResponseEventArgs e)
 {
     Deployment.Current.Dispatcher.BeginInvoke(() => {
         try {
             StreamReader reader         = new StreamReader(e.Response);
             string strResponse          = reader.ReadToEnd();
             var parameters              = KeyValuePairUtils.GetQueryParameters(strResponse);
             TwitterClient.OAuthTokenKey = parameters["oauth_token"];
             TwitterClient.TokenSecret   = parameters["oauth_token_secret"];
             var authorizeUrl            = AppSettings.AuthorizeUri + "?oauth_token=" + TwitterClient.OAuthTokenKey;
             Deployment.Current.Dispatcher.BeginInvoke(() => {
                 _browser.Source = new Uri(authorizeUrl, UriKind.RelativeOrAbsolute);
                 CurrentUrl      = authorizeUrl;
             });
         } catch (Exception ex) {
             fail();
         }
     });
 }
コード例 #6
0
        private void requestTokenQuery_QueryResponse(object sender, WebQueryResponseEventArgs e)
        {
            try
            {
                StreamReader reader      = new StreamReader(e.Response);
                string       strResponse = reader.ReadToEnd();
                var          parameters  = GetQueryParameters(strResponse);
                oAuthTokenKey = parameters["oauth_token"];
                tokenSecret   = parameters["oauth_token_secret"];
                var authorizeUrl = Social.TwitterSettings.AuthorizeUri + "?oauth_token=" + oAuthTokenKey;

                Dispatcher.BeginInvoke(() =>
                {
                    this.BrowserControl.Navigate(new Uri(authorizeUrl, UriKind.RelativeOrAbsolute));
                });
            }
            catch (Exception ex)
            {
                Debug.WriteLine("SocialPages :: requestTokenQuery_QueryResponse : TwitterAuth , Exception:" + ex.StackTrace);
            }
        }
コード例 #7
0
        void requestTokenQuery_QueryResponse(object sender, WebQueryResponseEventArgs e)
        {
            try
            {
                var parameters = TwitterHelper.GetQueryParameters((new StreamReader(e.Response)).ReadToEnd());
                OAuthTokenKey = parameters["oauth_token"];
                tokenSecret   = parameters["oauth_token_secret"];
                var authorizeUrl = AppSettings.TwitterAuthorizeUri + "?oauth_token=" + OAuthTokenKey;

                Dispatcher.BeginInvoke(() =>
                {
                    this.wbTwitter.Navigate(new Uri(authorizeUrl));
                });
            }
            catch (Exception ex)
            {
                Dispatcher.BeginInvoke(() =>
                {
                    MessageBox.Show(ex.Message);
                });
            }
        }
コード例 #8
0
        void AccessTokenQuery_QueryResponse(object sender, WebQueryResponseEventArgs e)
        {
            try {
                Deployment.Current.Dispatcher.BeginInvoke(() => {
                    StreamReader reader             = new StreamReader(e.Response);
                    string strResponse              = reader.ReadToEnd();
                    var parameters                  = KeyValuePairUtils.GetQueryParameters(strResponse);
                    TwitterClient.AccessToken       = parameters["oauth_token"];
                    TwitterClient.AccessTokenSecret = parameters["oauth_token_secret"];
                    TwitterClient.UserID            = parameters["user_id"];
                    TwitterClient.UserScreenName    = parameters["screen_name"];

                    KeyValuePairUtils.SetKeyValue <string>(TwitterClient.KeyAcessToken, TwitterClient.AccessToken);
                    KeyValuePairUtils.SetKeyValue <string>(TwitterClient.KeyAcessTokenSecret, TwitterClient.AccessTokenSecret);
                    KeyValuePairUtils.SetKeyValue <string>(TwitterClient.KeyUserName, TwitterClient.UserScreenName);
                    KeyValuePairUtils.SetKeyValue <string>(TwitterClient.KeyUserID, TwitterClient.UserID);
                    success(parameters["oauth_token"], parameters["oauth_token_secret"]);
                });
            } catch (Exception ex) {
                fail();
            }
        }
コード例 #9
0
 void AccessTokenQuery_QueryResponse(object sender, WebQueryResponseEventArgs e)
 {
     try
     {
         StreamReader reader      = new StreamReader(e.Response);
         string       strResponse = reader.ReadToEnd();
         var          parameters  = GetQueryParameters(strResponse);
         App.WriteToIsoStorageSettings(HikeConstants.AppSettings.TWITTER_TOKEN, parameters["oauth_token"]);
         App.WriteToIsoStorageSettings(HikeConstants.AppSettings.TWITTER_TOKEN_SECRET, parameters["oauth_token_secret"]);
         App.WriteToIsoStorageSettings(HikeConstants.TW_LOGGED_IN, true);
         Dispatcher.BeginInvoke(() =>
         {
             PhoneApplicationService.Current.State["socialState"] = FreeSMS.SocialState.TW_LOGIN;
             if (NavigationService.CanGoBack)
             {
                 NavigationService.GoBack();
             }
         });
     }
     catch (Exception ex)
     {
         Debug.WriteLine("SocialPages::AccessTokenQuery_QueryResponse, Exception:" + ex.StackTrace);
     }
 }
コード例 #10
0
        void requestTokenQuery_QueryResponse(object sender, WebQueryResponseEventArgs e)
        {
            try
            {
                StreamReader reader      = new StreamReader(e.Response);
                string       strResponse = reader.ReadToEnd();
                var          parameters  = MainUtil.GetQueryParameters(strResponse);
                OAuthTokenKey = parameters["oauth_token"];
                tokenSecret   = parameters["oauth_token_secret"];
                var authorizeUrl = TwitterSettings.AuthorizeUri + "?oauth_token=" + OAuthTokenKey;

                Dispatcher.BeginInvoke(() =>
                {
                    this.loginBrowserControl.Navigate(new Uri(authorizeUrl, UriKind.RelativeOrAbsolute));
                });
            }
            catch (Exception ex)
            {
                Dispatcher.BeginInvoke(() =>
                {
                    MessageBox.Show(ex.Message);
                });
            }
        }
コード例 #11
0
        /// <summary>
        /// Handles the OpenReadCompleted event of the client control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="System.Net.OpenReadCompletedEventArgs"/> instance containing the event data.</param>
        protected virtual void client_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
        {
            // TODO: AsyncCompletedEventArgs?
#if !SILVERLIGHT
            if (e.Error != null)
            {
                var args = new WebQueryResponseEventArgs(e.Error.Message, e.Error as WebException);
                OnQueryResponse(args);
            }
#endif
            try
            {
                using (var stream = e.Result)
                {
                    if (stream != null)
                    {
                        using (var reader = new StreamReader(stream))
                        {
                            var result = reader.ReadToEnd();

                            WebResponse = ((IWebQueryClient)sender).Response;

                            if (e.UserState != null)
                            {
                                // no expiration specified
                                if (e.UserState is Pair<IClientCache, string>)
                                {
                                    var state = (e.UserState as Pair<IClientCache, string>);
                                    state.First.Insert(state.Second, result);
                                }

                                // absolute expiration specified
                                if (e.UserState is Pair<IClientCache, Pair<string, DateTime>>)
                                {
                                    var state = e.UserState as Pair<IClientCache, Pair<string, DateTime>>;
                                    state.First.Insert(state.Second.First, result, state.Second.Second);
                                }

                                // sliding expiration specified
                                if (e.UserState is Pair<IClientCache, Pair<string, TimeSpan>>)
                                {
                                    var state = e.UserState as Pair<IClientCache, Pair<string, TimeSpan>>;
                                    state.First.Insert(state.Second.First, result, state.Second.Second);
                                }
                            }

                            // only send query when caching is complete
                            var args = new WebQueryResponseEventArgs(result);
                            OnQueryResponse(args);
                        }
                    }
                    else
                    {
                        Exception ex = e.UserState as Exception;
                        if (ex != null)
                        {
                            WebException webEx = ex as WebException;
                            string msg;
                            if (webEx != null)
                            {
                                HandleWebException(webEx);
                            }
                            else
                            {
                                webEx = new WebException("Some kind of a web exception", ex);
                                HandleWebException(webEx);
                            }
                           
                            
                        }
                    }
                }

            }
            catch (WebException ex)
            {
                var message = HandleWebException(ex);
                var args = new WebQueryResponseEventArgs(message, ex);

                OnQueryResponse(args);
            }
        }
コード例 #12
0
        // expects real cache key, not prefix
        private void ExecuteGetAsyncAndCacheWithExpiry(IClientCache cache, string key, string url,
                                                       TimeSpan slidingExpiration, IWebQueryClient client)
        {
            var fetch = cache.Get<string>(key);

            if (fetch != null)
            {
                var args = new WebQueryResponseEventArgs(fetch);
                OnQueryResponse(args);
            }
            else
            {
                var state = new Pair<IClientCache, Pair<string, TimeSpan>>
                                {
                                    First = cache,
                                    Second = new Pair<string, TimeSpan> {First = key, Second = slidingExpiration}
                                };

                var args = new WebQueryRequestEventArgs(url);
                OnQueryRequest(args);

                client.OpenReadCompleted += client_OpenReadCompleted;
                client.OpenReadAsync(new Uri(url), state);
            }
        }
コード例 #13
0
        protected virtual void PostAsyncResponseCallback(IAsyncResult asyncResult)
        {
            var state = asyncResult.AsyncState as Pair<WebRequest, Triplet<IClientCache, object, string>>;
            if (state == null)
            {
                throw new ArgumentNullException("asyncResult", "The asynchronous post failed to return its state");
            }

            var request = state.First;
            if (request == null)
            {
                throw new ArgumentNullException("asyncResult", "The asynchronous post failed to return a request");
            }

            try
            {
                // Avoid disposing until no longer needed to build results
                var response = request.EndGetResponse(asyncResult);
                WebResponse = response;

                using (var reader = new StreamReader(response.GetResponseStream()))
                {
                    var result = reader.ReadToEnd();
                    if (state.Second != null)
                    {
                        var cache = state.Second.First;
                        var expiry = state.Second.Second;
                        var url = request.RequestUri.ToString();

                        var prefix = state.Second.Third;
                        var key = CreateCacheKey(prefix, url);

                        if (expiry is DateTime)
                        {
                            // absolute
                            cache.Insert(key, result, (DateTime) expiry);
                        }

                        if (expiry is TimeSpan)
                        {
                            // sliding
                            cache.Insert(key, result, (TimeSpan) expiry);
                        }
                    }

                    var args = new WebQueryResponseEventArgs(result);
                    OnQueryResponse(args);
                }
            }
            catch (WebException ex)
            {
                HandleWebException(ex);
            }
        }
コード例 #14
0
        protected virtual void PostAsyncRequestCallback(IAsyncResult asyncResult)
        {
            WebRequest request;
            byte[] content;
            Triplet<IClientCache, object, string> store;

            var state = asyncResult.AsyncState as Pair<WebRequest, byte[]>;
            if (state == null)
            {
                // no expiration specified
                if (asyncResult is Pair<WebRequest, Triplet<byte[], IClientCache, string>>)
                {
                    var cacheScheme = (Pair<WebRequest, Triplet<byte[], IClientCache, string>>) asyncResult;
                    var cache = cacheScheme.Second.Second;

                    var url = cacheScheme.First.RequestUri.ToString();
                    var prefix = cacheScheme.Second.Third;
                    var key = CreateCacheKey(prefix, url);

                    var fetch = cache.Get<string>(key);
                    if (fetch != null)
                    {
                        var args = new WebQueryResponseEventArgs(fetch);
                        OnQueryResponse(args);
                        return;
                    }

                    request = cacheScheme.First;
                    content = cacheScheme.Second.First;
                    store = new Triplet<IClientCache, object, string> {First = cache, Second = null, Third = prefix};
                }
                else
                    // absolute expiration specified
                    if (asyncResult is Pair<WebRequest, Pair<byte[], Triplet<IClientCache, DateTime, string>>>)
                    {
                        var cacheScheme =
                            (Pair<WebRequest, Pair<byte[], Triplet<IClientCache, DateTime, string>>>) asyncResult;
                        var url = cacheScheme.First.RequestUri.ToString();
                        var cache = cacheScheme.Second.Second.First;
                        var expiry = cacheScheme.Second.Second.Second;

                        var prefix = cacheScheme.Second.Second.Third;
                        var key = CreateCacheKey(prefix, url);

                        var fetch = cache.Get<string>(key);
                        if (fetch != null)
                        {
                            var args = new WebQueryResponseEventArgs(fetch);
                            OnQueryResponse(args);
                            return;
                        }

                        request = cacheScheme.First;
                        content = cacheScheme.Second.First;
                        store = new Triplet<IClientCache, object, string>
                                    {First = cache, Second = expiry, Third = prefix};
                    }
                    else
                        // sliding expiration specified
                        if (asyncResult is Pair<WebRequest, Pair<byte[], Triplet<IClientCache, TimeSpan, string>>>)
                        {
                            var cacheScheme =
                                (Pair<WebRequest, Pair<byte[], Triplet<IClientCache, TimeSpan, string>>>) asyncResult;
                            var url = cacheScheme.First.RequestUri.ToString();
                            var cache = cacheScheme.Second.Second.First;
                            var expiry = cacheScheme.Second.Second.Second;

                            var prefix = cacheScheme.Second.Second.Third;
                            var key = CreateCacheKey(prefix, url);

                            var fetch = cache.Get<string>(key);
                            if (fetch != null)
                            {
                                var args = new WebQueryResponseEventArgs(fetch);
                                OnQueryResponse(args);
                                return;
                            }

                            request = cacheScheme.First;
                            content = cacheScheme.Second.First;
                            store = new Triplet<IClientCache, object, string>
                                        {First = cache, Second = expiry, Third = prefix};
                        }
                        else
                        {
                            // unrecognized state signature
                            throw new ArgumentNullException("asyncResult",
                                                            "The asynchronous post failed to return its state");
                        }
            }
            else
            {
                request = state.First;
                content = state.Second;
                store = null;
            }

            // no cached response
            using (var stream = request.EndGetRequestStream(asyncResult))
            {
                if (content != null)
                {
                    stream.Write(content, 0, content.Length);
                }
                stream.Close();

                request.BeginGetResponse(PostAsyncResponseCallback,
                                         new Pair<WebRequest, Triplet<IClientCache, object, string>>
                                             {First = request, Second = store});
            }
        }
コード例 #15
0
        protected string HandleWebException(WebException ex)
        {
            if (ex.Response is HttpWebResponse && ex.Response != null)
            {
                WebResponse = ex.Response;

                using (var reader = new StreamReader(WebResponse.GetResponseStream()))
                {
                    var result = reader.ReadToEnd();
                    var args = new WebQueryResponseEventArgs(result, ex);

                    OnQueryResponse(args);
                    return result;
                }
            }
            else
            {
                var args = new WebQueryResponseEventArgs(null, ex);
                OnQueryResponse(args);

            }

            return string.Empty;
        }
コード例 #16
0
        protected virtual string ExecutePostOrPut(PostOrPut method, string url, IEnumerable<HttpPostParameter> parameters)
        {
            WebResponse = null;
            byte[] bytes;
            var request = BuildMultiPartFormRequest(method, url, parameters, out bytes);

            using (var requestStream = request.GetRequestStream())
            {
                requestStream.Write(bytes, 0, bytes.Length);
                requestStream.Flush();
                requestStream.Close();

                // Avoid disposing until no longer needed to build results
                var response = request.GetResponse();
                WebResponse = response;

                using (var reader = new StreamReader(response.GetResponseStream()))
                {
                    var result = reader.ReadToEnd();

                    var responseArgs = new WebQueryResponseEventArgs(result);
                    OnQueryResponse(responseArgs);

                    WebResponse = response;
                    return result;
                }
            }
        }
コード例 #17
0
        protected virtual string ExecutePostOrPut(PostOrPut method, string url, out WebException exception)
        {
            WebResponse = null;
            exception = null;
            byte[] content;
            var request = BuildPostOrPutWebRequest(method, url, out content);

            var requestArgs = new WebQueryRequestEventArgs(url);
            OnQueryRequest(requestArgs);

            try
            {
                using (var stream = request.GetRequestStream())
                {
                    stream.Write(content, 0, content.Length);
                    stream.Close();

                    // Avoid disposing until no longer needed to build results
                    var response = request.GetResponse();
                    WebResponse = response;

                    using (var reader = new StreamReader(response.GetResponseStream()))
                    {
                        var result = reader.ReadToEnd();

                        var responseArgs = new WebQueryResponseEventArgs(result);
                        OnQueryResponse(responseArgs);

                        return result;
                    }
                }
            }
            catch (WebException ex)
            {
                exception = ex; 
                return HandleWebException(ex);
            }
        }
コード例 #18
0
        protected virtual string ExecuteGet(string url, out WebException exception)
        {
            WebResponse = null;
            var client = CreateWebQueryClient();

            var requestArgs = new WebQueryRequestEventArgs(url);
            OnQueryRequest(requestArgs);

            try
            {
                using (var stream = client.OpenRead(url))
                {
                    using (var reader = new StreamReader(stream))
                    {
                        var result = reader.ReadToEnd();

                        var responseArgs = new WebQueryResponseEventArgs(result);
                        OnQueryResponse(responseArgs);

                        return result;
                    }
                }
            }
            catch (WebException ex)
            {
                client.Exception = client.Exception ?? ex; 
                return HandleWebException(ex);
            }
            finally
            {
                exception = client.Exception;
                WebResponse = client.Response;
            }
        }
コード例 #19
0
        public virtual void ExecuteStreamGet(string url, TimeSpan duration, int resultCount)
        {
            WebResponse = null;
            var client = CreateWebQueryClient();

            var requestArgs = new WebQueryRequestEventArgs(url);
            OnQueryRequest(requestArgs);

            Stream stream = null;

            try
            {
                using (stream = client.OpenRead(url))
                {
                    // [DC]: cannot refactor this block to common method; will cause wc/hwr to hang
                    var count = 0;
                    var results = new List<string>();
                    var start = DateTime.UtcNow;

                    using (var reader = new StreamReader(stream))
                    {
                        var line = "";

                        while ((line = reader.ReadLine()).Length > 0)
                        {
                            if (line.Equals(Environment.NewLine))
                            {
                                // Keep-Alive
                                continue;
                            }

                            if (line.Equals("<html>"))
                            {
                                // We're looking at a 401 or similar; construct error result?
                                return;
                            }

                            results.Add(line);
                            count++;

                            if (count < resultCount)
                            {
                                // Result buffer
                                continue;
                            }

                            var sb = new StringBuilder();
                            foreach (var result in results)
                            {
                                sb.AppendLine(result);
                            }

                            var responseArgs = new WebQueryResponseEventArgs(sb.ToString());
                            OnQueryResponse(responseArgs);

                            count = 0;

                            var now = DateTime.UtcNow;
                            if (duration == TimeSpan.Zero || now.Subtract(start) < duration)
                            {
                                continue;
                            }

                            // Time elapsed
                            client.CancelAsync();
                            return;
                        }

                        // Stream dried up
                    }
                    client.CancelAsync();
                }
            }
            catch (WebException ex)
            {
                client.Exception = client.Exception ?? ex;
            }
            finally
            {
                if (stream != null)
                {
                    stream.Close();
                    stream.Dispose();
                }

                WebResponse = client.Response;
            }
        }
コード例 #20
0
 /// <summary>
 /// Raises the <see cref="QueryResponse"/> event.
 /// </summary>
 /// <param name="args">The <see cref="TweetSharp.Core.Web.WebQueryResponseEventArgs"/> instance containing the event data.</param>
 public virtual void OnQueryResponse(WebQueryResponseEventArgs args)
 {
     if (QueryResponse != null)
     {
         QueryResponse(this, args);
     }
 }
コード例 #21
0
ファイル: Requests.cs プロジェクト: fakstory/ProcTweet
 ////////////////////////////////////////////////////////////////////////////////////////////////////
 /// <summary>   Executes the request return action. </summary>
 ///
 /// <remarks>   Olivier Gagnon, 2009-11-18. </remarks>
 ///
 /// <param name="sender">   Source of the event. </param>
 /// <param name="e">        Event information to send to registered event handlers. </param>
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 private static void OnRequestReturn(TweetWin tw, WebQueryResponseEventArgs e)
 {
     Console.WriteLine(e.Response);
     TwitterRateLimitStatus crate = e.Response.AsRateLimitStatus();
     string chitsleft = String.Format("{0}/{1} hits remaining. Resets at: {2}",
                                      crate.RemainingHits, crate.HourlyLimit,
                                      crate.ResetTime.TimeOfDay);
     if (tw.InvokeRequired)
     {
         tw.Invoke((Action) (() => { tw.StatusText.Text = chitsleft; }));
     }
     else
         tw.StatusText.Text = chitsleft;
 }
コード例 #22
0
        protected override string ExecuteGet(string url, out WebException exception)
        {
            WebResponse = null;
            exception = null;
            
            var client = CreateWebQueryClient();
            if (HasAuth)
            {
                client.WebCredentials = new WebCredentials(_username, _password);
            }

            var requestArgs = new WebQueryRequestEventArgs(url);
            OnQueryRequest(requestArgs);

            // todo too much code duplication with base class
            try
            {
                using (var stream = client.OpenRead(url))
                {
                    exception = client.Exception; 
                    using (var reader = new StreamReader(stream))
                    {
                        var result = reader.ReadToEnd();
                        var responseArgs = new WebQueryResponseEventArgs(result);
                        OnQueryResponse(responseArgs);

                        return result;
                    }
                }
            }
            catch (WebException ex)
            {
                exception = client.Exception ?? ex;
                return HandleWebException(ex);
            }
            finally
            {
                if (WebResponse == null || client.Response != null)
                {
                    WebResponse = client.Response;
                }
                if ( WebResponse == null && client.Request != null )
                {
                    WebResponse = client.GetWebResponseShim(client.Request);
                }
            }
        }
コード例 #23
0
        public virtual void ExecuteStreamPost(PostOrPut method, string url, TimeSpan duration, int resultCount)
        {
            WebResponse = null;
            byte[] content;
            var request = BuildPostOrPutWebRequest(method, url, out content);

            var requestArgs = new WebQueryRequestEventArgs(url);
            OnQueryRequest(requestArgs);

            Stream stream = null;
            try
            {
                using (stream = request.GetRequestStream())
                {
                    stream.Write(content, 0, content.Length);
                    stream.Close();

                    var response = request.GetResponse();
                    WebResponse = response;
                    
                    using (var responseStream = response.GetResponseStream())
                    {
                        // [DC]: cannot refactor this block to common method; will cause hwr to hang
                        var count = 0;
                        var results = new List<string>();
                        var start = DateTime.UtcNow;

                        using (var reader = new StreamReader(responseStream))
                        {
                            var line = "";

                            while ((line = reader.ReadLine()).Length > 0)
                            {
                                if (line.Equals(Environment.NewLine))
                                {
                                    // Keep-Alive
                                    continue;
                                }

                                if (line.Equals("<html>"))
                                {
                                    // We're looking at a 401 or similar; construct error result?
                                    return;
                                }

                                results.Add(line);
                                count++;

                                if (count < resultCount)
                                {
                                    // Result buffer
                                    continue;
                                }

                                var sb = new StringBuilder();
                                foreach (var result in results)
                                {
                                    sb.AppendLine(result);
                                }

                                var responseArgs = new WebQueryResponseEventArgs(sb.ToString());
                                OnQueryResponse(responseArgs);

                                count = 0;

                                var now = DateTime.UtcNow;
                                if (now.Subtract(start) >= duration)
                                {
                                    // Time elapsed
                                    request.Abort();
                                    return;
                                }
                            }

                            // Stream dried up
                        }
                    }
                }
            }
            catch (WebException)
            {
                // 
            }
            finally
            {
                if (stream != null)
                {
                    stream.Close();
                    stream.Dispose();
                }
            }
        }
コード例 #24
0
        protected virtual void client_OpenReadStreamCompleted(object sender, OpenReadCompletedEventArgs e)
        {
#if !SILVERLIGHT
            if (e.Error != null)
            {
                var args = new WebQueryResponseEventArgs(e.Error.Message, e.Error as WebException);
                OnQueryResponse(args);
            }
#endif
            var stream = e.Result;
            if (stream == null)
            {
                return;
            }

            var client = ((IWebQueryClient) sender);
            var state = (Pair<TimeSpan, int>) e.UserState;
            var duration = state.First;
            var resultCount = state.Second;

            try
            {
                using (stream = e.Result)
                {
                    if (stream != null)
                    {
                        var count = 0;
                        var results = new List<string>();
                        var start = DateTime.UtcNow;

                        using (var reader = new StreamReader(stream))
                        {
                            var line = "";

                            while ((line = reader.ReadLine()).Length > 0)
                            {
                                if (line.Equals(Environment.NewLine))
                                {
                                    // Keep-Alive
                                    continue;
                                }

                                if (line.Equals("<html>"))
                                {
                                    // We're looking at a 401 or similar; construct error result?
                                    return;
                                }

                                results.Add(line);
                                count++;

                                if (count < resultCount)
                                {
                                    // Result buffer
                                    continue;
                                }

                                var sb = new StringBuilder();
                                foreach (var result in results)
                                {
                                    sb.AppendLine(result);
                                }

                                var responseArgs = new WebQueryResponseEventArgs(sb.ToString());
                                OnQueryResponse(responseArgs);

                                count = 0;

                                var now = DateTime.UtcNow;
                                if (now.Subtract(start) >= duration)
                                {
                                    // Time elapsed
                                    client.CancelAsync();
                                    return;
                                }
                            }

                            // Stream dried up
                        }
                        client.CancelAsync();
                    }
                }
            }
            catch (WebException)
            {
                //    
            }
            finally
            {
                if (stream != null)
                {
                    stream.Close();
                    stream.Dispose();
                }

                WebResponse = client.Response;
            }
        }