コード例 #1
0
        private async void FetchTweets(string fetchText)
        {
            IEnumerable <Tweet> timeLine = null;

            try
            {
                IsBusy = true;

                var filter = GetAccount(fetchText);

                if (filter != null)
                {
                    timeLine = await TwitterService.Instance.GetUserTimeLineAsync(filter, 10);
                }
                else
                {
                    timeLine = await TwitterService.Instance.SearchAsync(fetchText, 10);
                }

                Tweets.Clear();

                foreach (var tweet in timeLine)
                {
                    Tweets.Add(tweet);
                }
            }
            finally
            {
                IsBusy = false;
            }
        }
コード例 #2
0
 public async Task Logout()
 {
     Settings.AuthKey    = null;
     Settings.AuthSecret = null;
     Tweets.Clear();
     await InitAuth();
 }
コード例 #3
0
ファイル: TwitterViewViewModel.cs プロジェクト: k-toshi/Beers
        async Task ExecuteLoadTweetsCommand()
        {
            if (IsBusy)
            {
                return;
            }

            IsBusy = true;

            try
            {
                Tweets.Clear();
                await TwitterController.GetTweets("熱中症");

                var tweets = TwitterController.GetTweetStatuses();
                foreach (var t in tweets)
                {
                    Tweet tweet = new Tweet();
                    tweet.Id                = t["id"];
                    tweet.Name              = t["user"]["name"];
                    tweet.Created           = t["created_at"];
                    tweet.Text              = t["text"];
                    tweet.Profile_image_url = t["user"]["profile_image_url"];
                    Tweets.Add(tweet);
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex);
            }
            finally
            {
                IsBusy = false;
            }
        }
コード例 #4
0
        public override async void Search(string keyword)
        {
            try{
                using (TwitterContext context = new TwitterContext(Authorizer)) {
                    Cancel();
                    Tweets.Clear();
                    Logger.LogMessage(new LogMessage($"Streaming has begun for keyword: {keyword}.", Severity.Information));

                    IQueryable <Streaming> streamQuery = context.Streaming
                                                         .Where(strm => strm.Type == StreamingType.Filter && strm.Track == keyword);

                    Task <List <Streaming> > stream = streamQuery
                                                      .WithCancellation(CancellationTokenSource.Token)
                                                      .StartAsync(content => Task.Run(() => {
                        if (!string.IsNullOrEmpty(content.Content))
                        {
                            Status status = content.Entity as Status;
                            if (status != null)
                            {
                                AddStatus(status);
                            }
                        }
                    }));

                    await stream;
                }
            } catch (OperationCanceledException) {
                Logger.LogMessage(new LogMessage($"Stream for '{keyword}' has stopped.", Severity.Information));
            } catch (Exception ex) {
                Logger.LogMessage(new LogMessage(ex.Message, Severity.Error));
            }
        }
コード例 #5
0
        async Task ExecuteLoadSocialCommandAsync()
        {
            if (LoadingSocial)
            {
                return;
            }

            LoadingSocial = true;
            try
            {
                SocialError = false;
                Tweets.Clear();

                var tweetService = DependencyService.Get <ITweetsService>();

                Tweets.ReplaceRange(await tweetService.GetTweets());
                // todo: implement this
            }
            catch (Exception ex)
            {
                SocialError       = true;
                ex.Data["method"] = "ExecuteLoadSocialCommandAsync";
                Logger.Report(ex);
            }
            finally
            {
                LoadingSocial = false;
                NoSocial      = Tweets.Count == 0;
            }
        }
コード例 #6
0
        public override async void Navigated(string navigationParameter)
        {
            try
            {
                IsSearching = true;
                Tweets.Clear();

                var clientResponse = await _twitterAuthenticator.AuthenticateAsync(_authInformation.AccessToken, _authInformation.AccessTokenSecret);

                if (clientResponse.StatusCode != HttpStatusCode.OK)
                {
                    Debug.WriteLine("Error authenticating: " + clientResponse.StatusCode + ": " + clientResponse.ErrorMessage);
                    return;
                }
                TwitterClient client = clientResponse.Content;

                var searchResponse = await client.SearchAsync(navigationParameter, RESULTS_TO_SHOW);

                if (searchResponse.StatusCode != HttpStatusCode.OK)
                {
                    Debug.WriteLine("Error searching: " + clientResponse.StatusCode + ": " + clientResponse.ErrorMessage);
                    return;
                }

                Tweets.Clear();

                //Tweets.Add(new Tweet()
                //{
                //    Author = "dsplaisted",
                //    ProfileImageUrl = new Uri("https://pbs.twimg.com/profile_images/51934680/iguana_bigger.jpg"),
                //    Text = "Short tweet",
                //    Timestamp = DateTime.Now
                //});

                //Tweets.Add(new Tweet()
                //{
                //    Author = "dsplaisted",
                //    ProfileImageUrl = new Uri("https://pbs.twimg.com/profile_images/51934680/iguana_bigger.jpg"),
                //    Text = "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
                //    Timestamp = DateTime.Now
                //});

                foreach (var tweet in searchResponse.Content)
                {
                    Tweets.Add(new Tweet()
                    {
                        Author          = tweet.User.ScreenName,
                        ProfileImageUrl = tweet.User.ProfileImageUri,
                        Text            = tweet.Text,
                        Timestamp       = tweet.CreatedAt
                    });
                }

                IsSearching = false;
            }
            catch (Exception ex)
            {
                Debug.WriteLine("Error searching Twitter: " + ex.ToString());
            }
        }
コード例 #7
0
        private async void ExecuteLoadTweetsCommand()
        {
            if (IsBusy)
            {
                return;
            }

            IsBusy = true;
            try
            {
                Tweets.Clear();
                var auth = new ApplicationOnlyAuthorizer()
                {
                    CredentialStore = new InMemoryCredentialStore
                    {
                        ConsumerKey    = "ZTmEODUCChOhLXO4lnUCEbH2I",
                        ConsumerSecret = "Y8z2Wouc5ckFb1a0wjUDT9KAI6DUat5tFNdmIkPLl8T4Nyaa2J",
                    },
                };
                await auth.AuthorizeAsync();

                var twitterContext = new TwitterContext(auth);

                var searchResponse =
                    await(from search in twitterContext.Search
                          where search.Type == SearchType.Search &&
                          search.Count == 100 &&
                          search.Query == "\"#dcc14\""
                          select search)
                    .SingleOrDefaultAsync();

                if (searchResponse != null && searchResponse.Statuses != null)
                {
                    var tweets =
                        (from tweet in searchResponse.Statuses
                         select new Tweet
                    {
                        StatusID = tweet.StatusID,
                        ScreenName = tweet.User.ScreenNameResponse,
                        Text = tweet.Text,
                        CurrentUserRetweet = tweet.CurrentUserRetweet,
                        CreatedAt = tweet.CreatedAt
                    }).ToList();


                    foreach (var tweet in tweets)
                    {
                        Tweets.Add(tweet);
                    }
                }
            }
            catch (Exception ex)
            {
                var page = new ContentPage();
                page.DisplayAlert("Error", "Unable to load twitter.", "OK");
            }

            IsBusy = false;
        }
コード例 #8
0
        async Task ExecuteLoadSocialCommandAsync()
        {
            if (LoadingSocial)
            {
                return;
            }

            LoadingSocial = true;
            try
            {
                SocialError = false;
                Tweets.Clear();

                using (var client = new HttpClient())
                {
                    #if ENABLE_TEST_CLOUD
                    var json = ResourceLoader.GetEmbeddedResourceString(Assembly.Load(new AssemblyName("UtahOpenSource.Clients.Portable")), "sampletweets.txt");
                    Tweets.ReplaceRange(JsonConvert.DeserializeObject <List <Tweet> >(json));
                    #else
                    var manager = DependencyService.Get <IStoreManager>() as UtahOpenSource.DataStore.Azure.StoreManager;
                    if (manager == null)
                    {
                        return;
                    }

                    await manager.InitializeAsync();

                    var mobileClient = UtahOpenSource.DataStore.Azure.StoreManager.MobileService;
                    if (mobileClient == null)
                    {
                        return;
                    }

                    var json = await mobileClient.InvokeApiAsync <string> ("Tweet", System.Net.Http.HttpMethod.Get, null);

                    if (string.IsNullOrWhiteSpace(json))
                    {
                        SocialError = true;
                        return;
                    }


                    Tweets.ReplaceRange(JsonConvert.DeserializeObject <List <Tweet> >(json));
                    #endif
                }
            }
            catch (Exception ex)
            {
                SocialError       = true;
                ex.Data["method"] = "ExecuteLoadSocialCommandAsync";
                Logger.Report(ex);
            }
            finally
            {
                LoadingSocial = false;
            }
        }
コード例 #9
0
ファイル: MainViewModel.cs プロジェクト: markawil/TwitterMVVM
        void BuildTweetsFromAllUsers()
        {
            Tweets.Clear();
            var tweets = _repository.GetAll();

            foreach (var tweetFromUser in tweets)
            {
                Tweets.Add(tweetFromUser);
            }
        }
コード例 #10
0
        private async void ExecuteRefreshCommand()
        {
            IsLoading = true;

            Tweets.Clear();
            _maxId = "";

            await GetTweets();

            IsLoading = false;
        }
コード例 #11
0
        void MapTweets(Task <string> x)
        {
            Thread.Sleep(2000);
            var json = new JavaScriptSerializer().Deserialize <dynamic>(x.Result);

            Tweets.Clear();
            foreach (var result in json["results"])
            {
                Tweets.Add(new TweetViewModel(result["text"]));
            }
            IsBusy = false;
        }
コード例 #12
0
        async Task ExecuteLoadTweetsCommand()
        {
            if (IsBusy)
            {
                return;
            }

            IsBusy = true;

            Tweets.Clear();

            var auth = new ApplicationOnlyAuthorizer
            {
                CredentialStore = new InMemoryCredentialStore
                {
                    ConsumerKey    = "4a8c7X6NqcBT5GY6nWOX9b32P",
                    ConsumerSecret = "QOIvLNS05WfORaQTwvkaxnfH7Rejwi7NgBVUBudtJ0yhiFpCjL",
                },
            };

            await auth.AuthorizeAsync();

            var twitterContext = new TwitterContext(auth);

            var queryResponse = await
                                    (from tweet in twitterContext.Status
                                    where tweet.Type == StatusType.User &&
                                    tweet.ScreenName == "xamarinhq" &&
                                    tweet.Count == 20 &&
                                    tweet.IncludeRetweets == true &&
                                    tweet.ExcludeReplies == true
                                    select tweet).ToListAsync();

            var tweets =
                (from tweet in queryResponse
                 select new Tweet
            {
                Name = tweet.User.Name,
                Time = tweet.CreatedAt,
                Text = tweet.Text,
                AvatarUrl = (tweet.RetweetedStatus != null && tweet.RetweetedStatus.User != null ?
                             tweet.RetweetedStatus.User.ProfileImageUrl.Replace("http://", "https://") : tweet.User.ProfileImageUrl.Replace("http://", "https://"))
            }).ToList();

            foreach (var tweet in tweets)
            {
                Tweets.Add(tweet);
            }

            IsBusy = false;
        }
コード例 #13
0
 private void Tweets_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
 {
     if (e.Action == NotifyCollectionChangedAction.Add)
     {
         foreach (var tweet in e.NewItems.Cast <Tweet>())
         {
             Tweets.Add(tweet);
         }
     }
     else if (e.Action == NotifyCollectionChangedAction.Reset)
     {
         Tweets.Clear();
     }
 }
コード例 #14
0
        private void RemoveSearch(string searchText)
        {
            var existingSearch = Searches.FirstOrDefault(s => s.SearchText == searchText);

            if (existingSearch != null)
            {
                existingSearch.SearchObservable.Dispose();
                Searches.Remove(existingSearch);
                if (Searches.Count == 0)
                {
                    Tweets.Clear();
                }
            }
        }
コード例 #15
0
ファイル: SimpleInterrogator.cs プロジェクト: igiz/TSpy
 public virtual void Search(string keyword)
 {
     Tweets.Clear();
     try {
         using (TwitterContext context = new TwitterContext(Authorizer)) {
             Search searchResponse = QueryBuilder.GetQuery(context, keyword);
             searchResponse.Statuses.ForEach(AddStatus);
             Logger.LogMessage(new LogMessage($"Returned {searchResponse.Statuses.Count} results.", Severity.Information));
         }
     } catch (Exception ex) {
         Logger.LogMessage(ex.InnerException != null
                                 ? new LogMessage(ex.InnerException.Message, Severity.Error)
                                 : new LogMessage(ex.Message, Severity.Error));
     }
 }
コード例 #16
0
        private void SearchResults()
        {
            if (Tweets.Count != 0)
            {
                Tweets.Clear();
            }

            if (Users.Count != 0)
            {
                Users.Clear();
            }

            SearchTweetsAsync();
            SearchUsersAsync();
        }
コード例 #17
0
        private async Task ExecuteLoadSocialCommandAsync()
        {
            if (LoadingSocial)
            {
                return;
            }

            LoadingSocial = true;
            try
            {
                SocialError = false;
                Tweets.Clear();

                using (var client = new HttpClient())
                {
                    await StoreManager.InitializeAsync();

                    if (StoreManager is open.conference.app.DataStore.Azure.StoreManager)
                    {
                        var mobileClient = open.conference.app.DataStore.Azure.StoreManager.MobileService;
                        if (mobileClient == null)
                        {
                            return;
                        }

                        var json = await mobileClient.InvokeApiAsync <string>("Tweet", HttpMethod.Get, null);

                        if (string.IsNullOrWhiteSpace(json))
                        {
                            SocialError = true;
                            return;
                        }

                        Tweets.ReplaceRange(JsonConvert.DeserializeObject <List <Tweet> >(json));
                    }
                }
            }
            catch (Exception ex)
            {
                SocialError       = true;
                ex.Data["method"] = "ExecuteLoadSocialCommandAsync";
                Logger.Log(ex.Message, Prism.Logging.Category.Exception, Priority.High);
            }
            finally
            {
                LoadingSocial = false;
            }
        }
コード例 #18
0
        public override async void Navigated(string navigationParameter)
        {
            try
            {
                IsSearching = true;
                Tweets.Clear();

                var clientResponse = await _twitterAuthenticator.AuthenticateAsync(_authInformation.AccessToken, _authInformation.AccessTokenSecret);

                if (clientResponse.StatusCode != HttpStatusCode.OK)
                {
                    Debug.WriteLine("Error authenticating: " + clientResponse.StatusCode + ": " + clientResponse.ErrorMessage);
                    return;
                }
                TwitterClient client = clientResponse.Content;

                var searchResponse = await client.SearchAsync(navigationParameter, RESULTS_TO_SHOW);

                if (searchResponse.StatusCode != HttpStatusCode.OK)
                {
                    Debug.WriteLine("Error searching: " + clientResponse.StatusCode + ": " + clientResponse.ErrorMessage);
                    return;
                }

                Tweets.Clear();
                foreach (var tweet in searchResponse.Content)
                {
                    Tweets.Add(new Tweet()
                    {
                        Author          = tweet.User.ScreenName,
                        ProfileImageUrl = tweet.User.ProfileImageUri,
                        Text            = tweet.Text,
                        Timestamp       = tweet.CreatedAt
                    });
                }

                IsSearching = false;
            }
            catch (Exception ex)
            {
                Debug.WriteLine("Error searching Twitter: " + ex.ToString());
            }
        }
コード例 #19
0
        private async Task ShowHomeTimeline()
        {
            try
            {
                var timeline = await _applicationClient.Timelines.GetHomeTimelineAsync();

                if (timeline != null)
                {
                    var dispatcher = Application.Current?.Dispatcher;
                    if (dispatcher != null)
                    {
                        dispatcher.Invoke(DispatcherPriority.Normal, new Action(() =>
                        {
                            Tweets.Clear();
                            foreach (var tweet in timeline)
                            {
                                if (Filter(tweet))
                                {
                                    Tweets.Add(tweet);
                                }
                            }
                            TweetsHTML = BuildHTML();
                        }));
                    }
                }
                _currentStream = await SubscribeToFilterStream();

                _refreshTimer = new System.Timers.Timer(Settings.RefreshInterval)
                {
                    AutoReset = false
                };
                _refreshTimer.Elapsed += OnRefreshTimerElapsed;
                _refreshTimer.Start();
            }
            finally
            {
                IsAppKeyScreen   = false;
                IsLoginScreen    = false;
                IsTweetScreen    = true;
                IsNotAuthorizing = true;
            }
        }
コード例 #20
0
        async Task ExecuteLoadItemsCommand()
        {
            IsBusy = true;

            try
            {
                Tweets.Clear();
                var tweets = await DataStore.GetItemsAsync(true);

                foreach (var tweet in tweets)
                {
                    Tweets.Add(tweet);
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex);
            }
            finally
            {
                IsBusy = false;
            }
        }
コード例 #21
0
ファイル: Twitter.cs プロジェクト: tiffanievelyn/twitter_poc
 public void searchUserTimeline(long userid)
 {
     Tweets.Clear();
     Tweets = twitter.SearchUserTimeline(userid);
 }
コード例 #22
0
ファイル: Twitter.cs プロジェクト: tiffanievelyn/twitter_poc
 public void getRetweetsOfMe()
 {
     Tweets.Clear();
     Tweets = twitter.GetRetweetsOfMe();
 }
コード例 #23
0
ファイル: Twitter.cs プロジェクト: tiffanievelyn/twitter_poc
 public void searchRepliesToId()
 {
     Tweets.Clear();
     Tweets = twitter.SearchRepliesToId(TweetId);
 }
コード例 #24
0
ファイル: Twitter.cs プロジェクト: tiffanievelyn/twitter_poc
 public void getMention()
 {
     Tweets.Clear();
     Tweets = twitter.GetMention();
 }
コード例 #25
0
ファイル: Twitter.cs プロジェクト: tiffanievelyn/twitter_poc
 public void search()
 {
     Tweets.Clear();
     Tweets = twitter.SearchQuery(Query, Latitude, Longitude, SearchType, Radius);
 }
コード例 #26
0
ファイル: Twitter.cs プロジェクト: tiffanievelyn/twitter_poc
 public void getTimeline()
 {
     Tweets.Clear();
     Tweets = twitter.GetTweetsCollection();
 }
コード例 #27
0
        public async Task LoadTweetsCommand(string search)
        {
            if (IsBusy)
            {
                return;
            }

            IsBusy = true;
            try
            {
                Tweets.Clear();
                var auth = new ApplicationOnlyAuthorizer()
                {
                    CredentialStore = new InMemoryCredentialStore
                    {
                        ConsumerKey    = "ZTmEODUCChOhLXO4lnUCEbH2I",
                        ConsumerSecret = "Y8z2Wouc5ckFb1a0wjUDT9KAI6DUat5tFNdmIkPLl8T4Nyaa2J",
                    },
                };
                await auth.AuthorizeAsync();

                var twitterContext = new TwitterContext(auth);

                var queryResponse = await
                                        (from tweet in twitterContext.Search
                                        where tweet.Type == SearchType.Search &&
                                        tweet.Query == search &&
                                        tweet.Count == 100
                                        select tweet).SingleOrDefaultAsync();

                if (queryResponse == null || queryResponse.Statuses == null)
                {
                    return;
                }


                var tweets =
                    (from tweet in queryResponse.Statuses
                     select new Tweet
                {
                    StatusID = tweet.StatusID,
                    ScreenName = tweet.User.ScreenNameResponse,
                    Text = tweet.Text,
                    CurrentUserRetweet = tweet.CurrentUserRetweet,
                    CreatedAt = tweet.CreatedAt,
                    Url = string.Format("https://m.twitter.com/{0}/status/{1}", tweet.User.ScreenNameResponse, tweet.StatusID),
                    Image = (tweet.RetweetedStatus != null && tweet.RetweetedStatus.User != null ?
                             tweet.RetweetedStatus.User.ProfileImageUrl : tweet.User.ProfileImageUrl)
                }).ToList();

                foreach (var tweet in tweets)
                {
                    Tweets.Add(tweet);
                }
            }
            catch (Exception ex)
            {
            }

            IsBusy = false;
        }
コード例 #28
0
        public async Task ExecuteLoadTweetsCommand()
        {
            if (IsBusy)
            {
                return;
            }

            IsBusy = true;
            LoadTweetsCommand.ChangeCanExecute();
            var error = false;

            try
            {
                Tweets.Clear();
                var auth = new ApplicationOnlyAuthorizer()
                {
                    CredentialStore = new InMemoryCredentialStore
                    {
                        ConsumerKey    = "ZTmEODUCChOhLXO4lnUCEbH2I",
                        ConsumerSecret = "Y8z2Wouc5ckFb1a0wjUDT9KAI6DUat5tFNdmIkPLl8T4Nyaa2J",
                    },
                };
                await auth.AuthorizeAsync();

                var twitterContext = new TwitterContext(auth);

                var queryResponse = await
                                        (from tweet in twitterContext.Status
                                        where tweet.Type == StatusType.User &&
                                        tweet.ScreenName == "shanselman" &&
                                        tweet.Count == 100 &&
                                        tweet.IncludeRetweets == true &&
                                        tweet.ExcludeReplies == true
                                        select tweet).ToListAsync();

                var tweets =
                    (from tweet in queryResponse
                     select new Tweet
                {
                    StatusID = tweet.StatusID,
                    ScreenName = tweet.User.ScreenNameResponse,
                    Text = tweet.Text,
                    CurrentUserRetweet = tweet.CurrentUserRetweet,
                    CreatedAt = tweet.CreatedAt,
                    Image = tweet.RetweetedStatus != null && tweet.RetweetedStatus.User != null ?
                            tweet.RetweetedStatus.User.ProfileImageUrl.Replace("http://", "https://") : (tweet.User.ScreenNameResponse == "shanselman" ? "scott159.png" : tweet.User.ProfileImageUrl.Replace("http://", "https://"))
                }).ToList();
                foreach (var tweet in tweets)
                {
                    Tweets.Add(tweet);
                }

                if (Device.OS == TargetPlatform.iOS)
                {
                    // only does anything on iOS, for the Watch
                    DependencyService.Get <ITweetStore>().Save(tweets);
                }
            }
            catch
            {
                error = true;
            }

            if (error)
            {
                var page = new ContentPage();
                await page.DisplayAlert("Error", "Unable to load tweets.", "OK");
            }

            IsBusy = false;
            LoadTweetsCommand.ChangeCanExecute();
        }
コード例 #29
0
        public async Task ExecuteLoadTweetsCommand()
        {
            if (IsBusy)
            {
                return;
            }

            IsBusy = true;
            LoadTweetsCommand.ChangeCanExecute();
            var error = false;

            try
            {
                Tweets.Clear();
                var auth = new ApplicationOnlyAuthorizer()
                {
                    CredentialStore = new InMemoryCredentialStore
                    {
                        ConsumerKey    = "nJY9F8wmTlHRgk4ADC0daADEo",
                        ConsumerSecret = "svZXhBwQrStrtYKcQfXBL4txSo5d34qteRwoODia24S7Pqgdpa",
                    },
                };
                await auth.AuthorizeAsync();

                var twitterContext = new TwitterContext(auth);

                var queryResponse = await
                                        (from tweet in twitterContext.Status
                                        where tweet.Type == StatusType.User &&
                                        tweet.ScreenName == "bwiredstudios" &&
                                        tweet.Count == 100 &&
                                        tweet.IncludeRetweets == true &&
                                        tweet.ExcludeReplies == true
                                        select tweet).ToListAsync();

                var tweets =
                    (from tweet in queryResponse
                     select new Tweet
                {
                    StatusID = tweet.StatusID,
                    ScreenName = tweet.User.ScreenNameResponse,
                    Text = tweet.Text,
                    CurrentUserRetweet = tweet.CurrentUserRetweet,
                    CreatedAt = tweet.CreatedAt,
                    Image = tweet.RetweetedStatus != null && tweet.RetweetedStatus.User != null ?
                            tweet.RetweetedStatus.User.ProfileImageUrl.Replace("http://", "https://") : (tweet.User.ScreenNameResponse == "bwiredstudios" ? "bwired_twitter.jpg" : tweet.User.ProfileImageUrl.Replace("http://", "https://"))
                }).ToList();
                foreach (var tweet in tweets)
                {
                    Tweets.Add(tweet);
                }

                if (Device.OS == TargetPlatform.iOS)
                {
                    // only does anything on iOS, for the Watch
                    DependencyService.Get <ITweetStore>().Save(tweets);
                }
            }
            catch
            {
                error = true;
            }

            if (error)
            {
                var page = new ContentPage();
                await page.DisplayAlert("Error", "Unable to load tweets.", "OK");
            }

            IsBusy = false;
            LoadTweetsCommand.ChangeCanExecute();
        }
コード例 #30
0
        public async Task ExecuteLoadTweetsCommand()
        {
            if (IsBusy)
            {
                return;
            }

            IsBusy = true;
            LoadTweetsCommand.ChangeCanExecute();
            var error = false;

            try
            {
                Tweets.Clear();
                //var auth = new ApplicationOnlyAuthorizer()
                //{
                //	CredentialStore = new InMemoryCredentialStore
                //	{
                //		ConsumerKey = "",
                //		ConsumerSecret = "",
                //	},
                //};
                //await auth.AuthorizeAsync();

                //var twitterContext = new TwitterContext(auth);

                //var queryResponse = await
                //  (from tweet in twitterContext.Status
                //   where tweet.Type == StatusType.User &&
                //	 tweet.ScreenName == "shanselman" &&
                //	 tweet.Count == 100 &&
                //	 tweet.IncludeRetweets == true &&
                //	 tweet.ExcludeReplies == true
                //   select tweet).ToListAsync();

                //var tweets =
                //  (from tweet in queryResponse
                //   select new Tweet
                //   {
                //	   StatusID = tweet.StatusID,
                //	   ScreenName = tweet.User.ScreenNameResponse,
                //	   Text = tweet.Text,
                //	   CurrentUserRetweet = tweet.CurrentUserRetweet,
                //	   CreatedAt = tweet.CreatedAt,
                //	   Image = tweet.RetweetedStatus != null && tweet.RetweetedStatus.User != null ?
                //					  tweet.RetweetedStatus.User.ProfileImageUrl.Replace("http://", "https://") : (tweet.User.ScreenNameResponse == "shanselman" ? "scott159.png" : tweet.User.ProfileImageUrl.Replace("http://", "https://"))
                //   }).ToList();
                //foreach (var tweet in tweets)
                //{
                //	Tweets.Add(tweet);
                //}

                //if (Device.OS == TargetPlatform.iOS)
                //{
                //	// only does anything on iOS, for the Watch
                //	//	DependencyService.Get<ITweetStore>().Save(tweets);
                //}
            }
            catch
            {
                error = true;
            }

            if (error)
            {
                var page = new ContentPage();
                await page.DisplayAlert("Error", "Unable to load tweets.", "OK");
            }

            IsBusy = false;
            LoadTweetsCommand.ChangeCanExecute();
        }