示例#1
0
        public async void GetItems()
        {
            string           consumerKey       = "YourConsumerKey";
            string           consumerSecret    = "YourConsumerSecret";
            string           accessToken       = "YourAccessToken";
            string           accessTokenSecret = "YourAccessTokenSecret";
            string           twitterQueryParam = "WindowsAppStudio";
            TwitterQueryType queryType         = TwitterQueryType.Search;
            int maxRecordsParam = 20;

            Items.Clear();

            var twitterDataProvider = new TwitterDataProvider(new TwitterOAuthTokens
            {
                AccessToken       = accessToken,
                AccessTokenSecret = accessTokenSecret,
                ConsumerKey       = consumerKey,
                ConsumerSecret    = consumerSecret
            });

            var config = new TwitterDataConfig
            {
                Query     = twitterQueryParam,
                QueryType = queryType
            };

            var items = await twitterDataProvider.LoadDataAsync(config, maxRecordsParam);

            foreach (var item in items)
            {
                Items.Add(item);
            }
        }
示例#2
0
        public async void GetItems()
        {
            string           consumerKey       = "5zcs3Bp2kTlrsDUsMDv5BYfND";
            string           consumerSecret    = "oZDbzyY6xmPJVskIUx0pyA4VlB6XdMQHPb4sjHDxUshgCStxzf";
            string           accessToken       = "	248216142-jMUS9hvL97gu8fwCpkD7XqkyDBfJypvvogNybchv";
            string           accessTokenSecret = "coDm0ePUoWIXlIH5v46jDJFUYANVG4SvGADrUL5Kf8aSQ";
            string           twitterQueryParam = "WindowsAppStudio";
            TwitterQueryType queryType         = TwitterQueryType.Search;
            int maxRecordsParam = 12;

            Items.Clear();

            _twitterDataProvider = new TwitterDataProvider(new TwitterOAuthTokens
            {
                AccessToken       = accessToken,
                AccessTokenSecret = accessTokenSecret,
                ConsumerKey       = consumerKey,
                ConsumerSecret    = consumerSecret
            });

            var config = new TwitterDataConfig
            {
                Query     = twitterQueryParam,
                QueryType = queryType
            };

            var items = await _twitterDataProvider.LoadDataAsync(config, maxRecordsParam);

            foreach (var item in items)
            {
                Items.Add(item);
            }
        }
示例#3
0
        public async Task <IList <Tweet> > NextPage(uint count)
        {
            try
            {
                TwitterDataConfig TDC = new TwitterDataConfig();
                TDC.QueryType = TwitterQueryType.Search;
                TDC.Query     = NextQuery();

                List <Tweet> Tweets = await TwitterService.Instance.RequestAsync(TDC, ( int )count);

                int l = Tweets.Count();
                _PageEnded = l < count;

                if (0 < l)
                {
                    ulong tId = ulong.Parse(Tweets.Last().Id) - 1;
                    MaxId = "max_id:" + tId.ToString();
                }

                return(Tweets.ToList());
            }
            catch (Exception ex)
            {
                Logger.Log(ID, ex.Message, LogType.WARNING);
            }

            _PageEnded = true;
            return(new Tweet[0]);
        }
示例#4
0
        private async Task PullHomeFeed()
        {
            // Fetches the home feed of the user (i.e. what the user's followers tweeted)
            TwitterDataConfig tc = new TwitterDataConfig();

            tc.QueryType        = TwitterQueryType.Home;
            lstHome.ItemsSource = await TwitterService.Instance.RequestAsync(tc, 50);
        }
 public async Task LoadMoreDataInvalidOperationTwitterHomeTimeLine()
 {
     var config = new TwitterDataConfig
     {
         QueryType = TwitterQueryType.Home
     };
     var dataProvider = new TwitterDataProvider(OAuthKeys.TwitterValidKeys);
     InvalidOperationException exception = await ExceptionsAssert.ThrowsAsync <InvalidOperationException>(async() => await dataProvider.LoadMoreDataAsync());
 }
示例#6
0
        public override async Task <IEnumerable <TwitterSchema> > GetDataAsync(SchemaBase connectedItem = null)
        {
            var config = new TwitterDataConfig
            {
                QueryType = TwitterQueryType.Search,
                Query     = @"#rodin"
            };

            return(await _dataProvider.LoadDataAsync(config, MaxRecords));
        }
        public async Task TestNullOAuth()
        {
            var config = new TwitterDataConfig
            {
                QueryType = TwitterQueryType.User,
                Query     = "lumia"
            };
            var dataProvider = new TwitterDataProvider(null);

            await ExceptionsAssert.ThrowsAsync <ConfigParameterNullException>(async() => await dataProvider.LoadDataAsync(config));
        }
        public async Task TestMaxRecordsHomeTimeLine()
        {
            int maxRecords = 70;
            var config     = new TwitterDataConfig
            {
                QueryType = TwitterQueryType.Home
            };
            var dataProvider = new TwitterDataProvider(OAuthKeys.TwitterValidKeys);
            IEnumerable <TwitterSchema> result = await dataProvider.LoadDataAsync(config, maxRecords);

            Assert.IsTrue(result.Count() > 15, $"There are {result.Count()} elements");
        }
        public async Task TestRevokedOAuth()
        {
            var config = new TwitterDataConfig
            {
                QueryType = TwitterQueryType.User,
                Query     = "lumia"
            };

            var dataProvider = new TwitterDataProvider(OAuthKeys.TwitterRevokedKeys);

            await ExceptionsAssert.ThrowsAsync <OAuthKeysRevokedException>(async() => await dataProvider.LoadDataAsync(config));
        }
        public async Task TestHomeTimeLine()
        {
            var config = new TwitterDataConfig
            {
                QueryType = TwitterQueryType.Home
            };
            var dataProvider = new TwitterDataProvider(OAuthKeys.TwitterValidKeys);
            IEnumerable <TwitterSchema> result = await dataProvider.LoadDataAsync(config);

            Assert.IsNotNull(result);
            Assert.IsTrue(result.Any());
        }
        public async Task TestNullQuery()
        {
            var config = new TwitterDataConfig
            {
                QueryType = TwitterQueryType.User
            };
            var dataProvider = new TwitterDataProvider(new TwitterOAuthTokens());

            ConfigParameterNullException exception = await ExceptionsAssert.ThrowsAsync <ConfigParameterNullException>(async() => await dataProvider.LoadDataAsync(config));

            Assert.IsTrue(exception.Message.Contains("Query"));
        }
示例#12
0
        public async Task <List <Tweet2> > GetFeedAsync()
        {
            if (!await TwitterService.Instance.LoginAsync())
            {
                // login failed. probably should do something here.
                return(null);
            }
            else
            {
                try
                {
                    TwitterUser TwUser = await TwitterService.Instance.GetUserAsync();
                }
                catch (TwitterException ex)
                {
                    if ((ex.Errors?.Errors?.Length > 0) && (ex.Errors.Errors[0].Code == 89))
                    {
                        await new MessageDialog("Access token expired! Logging out.").ShowAsync();
                        TwitterService.Instance.Logout();
                        return(null);
                    }
                    else
                    {
                        throw ex;
                    }
                }

                var TwConfig = new TwitterDataConfig
                {
                    Query     = "statuses/home_timeline.json",
                    QueryType = TwitterQueryType.Home
                };

                // create a list of Tweet objects
                List <Tweet> TwTweets = await TwitterService.Instance.RequestAsync(TwConfig, 100);

                // instantiate a list of Tweet2 objects, which will allow adding additional metadata to the tweet object
                List <Tweet2> Tweets = new List <Tweet2>();

                // iterate through the list of Tweet objects and convert them to Tweet2 objects
                // then add the Tweet2 objects to the new list
                foreach (Tweet t in TwTweets)
                {
                    Tweet2 t2 = new Tweet2();
                    t2.BaseTweet = t;

                    Tweets.Add(t2);
                }

                return(Tweets);
            }
        }
        public async Task TestEmptyOAuth()
        {
            var config = new TwitterDataConfig
            {
                QueryType = TwitterQueryType.User,
                Query     = "lumia"
            };
            var dataProvider = new TwitterDataProvider(new TwitterOAuthTokens());

            OAuthKeysNotPresentException exception = await ExceptionsAssert.ThrowsAsync <OAuthKeysNotPresentException>(async() => await dataProvider.LoadDataAsync(config));

            Assert.IsTrue(exception.Message.Contains("ConsumerKey"));
        }
        public async Task TestMaxRecordsSearch_Min()
        {
            int maxRecords = 1;
            var config     = new TwitterDataConfig
            {
                QueryType = TwitterQueryType.Search,
                Query     = "microsoft"
            };
            var dataProvider = new TwitterDataProvider(OAuthKeys.TwitterValidKeys);
            IEnumerable <TwitterSchema> result = await dataProvider.LoadDataAsync(config, maxRecords);

            Assert.IsTrue(result.Count() <= maxRecords);
        }
示例#15
0
        private async void Request()
        {
            try
            {
                IsBusy              = true;
                HasErrors           = false;
                NoItems             = false;
                DataProviderRawData = string.Empty;
                Items.Clear();

                var twitterDataProvider = new TwitterDataProvider(new TwitterOAuthTokens
                {
                    AccessToken       = AccessToken,
                    AccessTokenSecret = AccessTokenSecret,
                    ConsumerKey       = ConsumerKey,
                    ConsumerSecret    = ConsumerSecret
                });

                var config = new TwitterDataConfig
                {
                    Query     = TwitterQueryParam,
                    QueryType = TwitterQueryTypeSelectedItem
                };

                var rawParser = new RawParser();
                var rawData   = await twitterDataProvider.LoadDataAsync(config, MaxRecordsParam, rawParser);

                DataProviderRawData = rawData.FirstOrDefault()?.Raw;

                var items = await twitterDataProvider.LoadDataAsync(config, MaxRecordsParam);

                NoItems = !items.Any();

                foreach (var item in items)
                {
                    Items.Add(item);
                }
            }
            catch (Exception ex)
            {
                DataProviderRawData += ex.Message;
                DataProviderRawData += ex.StackTrace;
                HasErrors            = true;
            }
            finally
            {
                IsBusy = false;
            }
        }
示例#16
0
        public async Task TestMaxRecordsUserTimeLine()
        {
            int maxRecords = 70;
            var config     = new TwitterDataConfig
            {
                QueryType = TwitterQueryType.User,
                Query     = "lumia"
            };
            var dataProvider = new TwitterDataProvider(OAuthKeys.TwitterValidKeys);
            IEnumerable <TwitterSchema> result = await dataProvider.LoadDataAsync(config, maxRecords);

            Assert.AreEqual(maxRecords, result.Count());

            Assert.IsTrue(result.Count() > 25);
        }
        public async Task LoadPaginationTwitterHomeTimeLine()
        {
            var config = new TwitterDataConfig
            {
                QueryType = TwitterQueryType.Home
            };
            var dataProvider = new TwitterDataProvider(OAuthKeys.TwitterValidKeys);
            await dataProvider.LoadDataAsync(config, 2);

            Assert.IsTrue(dataProvider.HasMoreItems);

            IEnumerable <TwitterSchema> result = await dataProvider.LoadMoreDataAsync();

            Assert.IsNotNull(result);
            Assert.IsTrue(result.Any());
        }
        public async Task LoadPaginationTwitterSearch()
        {
            var config = new TwitterDataConfig
            {
                QueryType = TwitterQueryType.Search,
                Query     = "microsoft"
            };
            var dataProvider = new TwitterDataProvider(OAuthKeys.TwitterValidKeys);
            await dataProvider.LoadDataAsync(config, 2);

            Assert.IsTrue(dataProvider.HasMoreItems, "HasMoreItems is false");

            IEnumerable <TwitterSchema> result = await dataProvider.LoadMoreDataAsync();

            Assert.IsNotNull(result);
            Assert.IsTrue(result.Any(), "There aren't any elements");
        }
        public async Task TestInvalidOAuth()
        {
            var config = new TwitterDataConfig
            {
                QueryType = TwitterQueryType.User,
                Query     = "lumia"
            };

            var tokens = new TwitterOAuthTokens
            {
                ConsumerKey       = "INVALID",
                ConsumerSecret    = "INVALID",
                AccessToken       = "INVALID",
                AccessTokenSecret = "INVALID"
            };

            var dataProvider = new TwitterDataProvider(tokens);

            await ExceptionsAssert.ThrowsAsync <OAuthKeysRevokedException>(async() => await dataProvider.LoadDataAsync(config));
        }
示例#20
0
        //----==== PRIVATE ====-------------------------------------------------------------------

        private async void FetchFollowers()
        {
            try
            {
                IsBusy = true;

                var config = new TwitterDataConfig {
                    Query = string.Empty, QueryType = TwitterQueryType.User
                };

                List <MyTwitterUser> users = await TwitterService.Instance.RequestAsync <MyTwitterUser>(config);

                Followers.Clear();

                foreach (var tweet in users)
                {
                    Followers.Add(tweet);
                }
            }
            catch (TwitterException tex)
            {
                if (tex.Errors?.Errors?.Length > 0 && tex.Errors.Errors[0].Code == 89)
                {
                }

                Message = $"Failed obtain followers: {tex.Message}";
            }
            catch (Exception ex)
            {
                Message = $"Failed obtain followers: {ex.Message}";
            }
            finally
            {
                IsBusy = false;
            }
        }