예제 #1
1
        public ActionResult AuthorizeCallback(string oauth_token, string oauth_verifier)
        {
            TwitterService service = new TwitterService(_consumerKey, _consumerSecret);
            var requestToken = new OAuthRequestToken {Token = oauth_token};

            OAuthAccessToken accessToken = service.GetAccessToken(requestToken, oauth_verifier);

            service.AuthenticateWith(accessToken.Token, accessToken.TokenSecret);
            TwitterUser user = service.VerifyCredentials();
            ViewModel.Message = string.Format("Your username is {0}", user.ScreenName);

            return View("Index");
        }
예제 #2
0
 protected override async void OnNavigatedTo(NavigationEventArgs e)
 {
     if (e.Parameter is TwitterService)
     {
         TwitterClient = e.Parameter as TwitterService;
         List<Tweet> lists = await TwitterClient.requestTwitterApi(_getHomeTimelineUrl);
         foreach (Tweet tweet in lists)
         {
             ViewModel.tweets.Add(tweet);
         }
         List<Tweet> mentions = await TwitterClient.requestTwitterApi(_getMentionsUrl);
         foreach (Tweet tweet in mentions)
         {
             MentionsViewModel.tweets.Add(tweet);
         }
         List<Tweet> userstweets = await TwitterClient.requestTwitterApi(_getUserTimelineUrl);
         foreach (Tweet tweet in userstweets)
         {
             ProfileViewModel.tweets.Add(tweet);
         }
     }
     else
     {
         //no tweets
     }
     base.OnNavigatedTo(e);
 }
예제 #3
0
 public void Can_parse_ids_greater_than_53_bits()
 {
     const string json = "{ \"id\": 90071992547409921}";
     var status = new TwitterService().Deserialize<TwitterStatus>(json);
     Assert.IsNotNull(status);
     Assert.AreEqual(90071992547409921, status.Id);
 }
        public void Can_get_media_links_from_entities()
        {
            var service = new TwitterService(_consumerKey, _consumerSecret);
            service.AuthenticateWith(_accessToken, _accessTokenSecret);

            var tweet = service.GetTweet(128818112387756032);
            Assert.IsNotNull(tweet.Entities);
            Assert.AreEqual(1, tweet.Entities.Media.Count);

            var media = tweet.Entities.Media[0];
            Assert.AreEqual("http://p.twimg.com/AcmnZAXCMAEaDD1.jpg", media.MediaUrl);
            Assert.AreEqual("https://p.twimg.com/AcmnZAXCMAEaDD1.jpg", media.MediaUrlHttps);
            Assert.AreEqual("http://twitter.com/sarah_hatton/status/128818112387756032/photo/1", media.ExpandedUrl);
            Assert.AreEqual("pic.twitter.com/xCdS2Emt", media.DisplayUrl);
            Assert.AreEqual(TwitterMediaType.Photo, media.MediaType);
            Assert.AreEqual(69, media.Indices[0]);
            Assert.AreEqual(89, media.Indices[1]);
            Assert.AreEqual("128818112391950337", media.IdAsString);
            Assert.AreEqual(128818112391950337, media.Id);

            // Sizes
            Assert.AreEqual(4, media.Sizes.Count());
            Assert.AreEqual("fit", media.Sizes.Large.Resize);
            Assert.AreEqual(597, media.Sizes.Large.Height);
            Assert.AreEqual(800, media.Sizes.Large.Width);
        }
        public void Can_get_reverse_geocode()
        {
            var service = new TwitterService(_consumerKey, _consumerSecret);
            service.AuthenticateWith(_accessToken, _accessTokenSecret);

            var places = service.ReverseGeocode(45.42153, -75.697193).ToList();
            Assert.IsNotEmpty(places);
            Assert.AreEqual(4, places.Count);

            places = places.OrderBy(p => p.Id).ToList();
            
            Assert.AreEqual("Ottawa, Ontario", places[0].FullName);
            Assert.AreEqual(TwitterPlaceType.City, places[0].PlaceType);
            Assert.AreEqual("06183ca2a30a18e8", places[0].Id);
            Assert.AreEqual(1, places[0].ContainedWithin.Count());
            Assert.AreEqual("89b2eb8b2b9847f7", places[0].ContainedWithin.ToList()[0].Id);
            
            Assert.AreEqual("Canada", places[1].FullName);
            Assert.AreEqual("3376992a082d67c7", places[1].Id);
            Assert.AreEqual(TwitterPlaceType.Country, places[1].PlaceType);

            Assert.AreEqual("Ontario, Canada", places[2].FullName);
            Assert.AreEqual(TwitterPlaceType.Admin, places[2].PlaceType);

            Assert.AreEqual("Québec, Canada", places[3].FullName);
            Assert.AreEqual(TwitterPlaceType.Admin, places[3].PlaceType);
        }
 public void Can_tweet_with_protected_resource_info()
 {
     var service = new TwitterService(_consumerKey, _consumerSecret);
     service.AuthenticateWith(_accessToken, _accessTokenSecret);
     var status = service.SendTweet(new SendTweetOptions { Status = DateTime.Now.Ticks.ToString() });
     Assert.IsNotNull(status);
 }
예제 #7
0
        public void Can_get_public_timeline()
        {
            var service = new TwitterService();
            var tweets = service.ListTweetsOnPublicTimeline();

            Assert.IsNotNull(tweets);
            Assert.AreEqual(20, tweets.Count());

            Assert.IsNotNull(service.Response);
            Assert.AreEqual(HttpStatusCode.OK, service.Response.StatusCode);
            
            var unfavorited = 20;
            foreach (var tweet in tweets)
            {
                Assert.IsNotNullOrEmpty(tweet.RawSource);
                Assert.AreNotEqual(default(DateTime), tweet.CreatedDate);

                Console.WriteLine("{0} said '{1}'", tweet.User.ScreenName, tweet.Text);
                if(tweet.IsFavorited)
                {
                    unfavorited--;
                }
            }

            Assert.IsTrue(unfavorited > 0);
            AssertRateLimitStatus(service);
        }
        public void Can_support_secure_urls_in_entitities()
        {
            var service = new TwitterService(_consumerKey, _consumerSecret);
            service.AuthenticateWith(_accessToken, _accessTokenSecret);

            var tweet = service.GetTweet(131501393033961472);
            Console.WriteLine(tweet.RawSource);
        }
				public async Task Can_get_request_token_async()
				{
					var service = new TwitterService(_consumerKey, _consumerSecret);
					var result = await service.GetRequestTokenAsync();
			
					Assert.AreEqual(result.Response.StatusCode, HttpStatusCode.OK);
					Assert.NotNull(result.Value);
				}
 public void Can_get_request_token()
 {
     var service = new TwitterService(_consumerKey, _consumerSecret);
     var requestToken = service.GetRequestToken();
     
     AssertResultWas(service, HttpStatusCode.OK);
     Assert.NotNull(requestToken);
 }
예제 #11
0
        public ActionResult Authorize()
        {
            TwitterService service = new TwitterService(_consumerKey, _consumerSecret);
            OAuthRequestToken requestToken = service.GetRequestToken();

            var uri = service.GetAuthorizationUri(requestToken);
            return new RedirectResult(uri.ToString(), false /*permanent*/);
        }
예제 #12
0
        public void GetTweets_Can_Successfully_Retrieve_Values_From_Twitter()
        {
            var query = "#ltnet";
            var twitterService = new TwitterService();

            var tweets = twitterService.GetTweets(query, this.date);

            Assert.That(tweets.Count(), Is.GreaterThan(0));
        }
예제 #13
0
        public void GetTweers_Returns_Empty_List_When_No_Results_Found()
        {
            var empty = 0;
            var query = "#hashtagfortesting";
            var twitterService = new TwitterService();

            var tweets = twitterService.GetTweets(query, this.date);

            Assert.AreEqual(empty, tweets.Count());
        }
예제 #14
0
        public void GetTweers_Returns_Empty_List_When_Internal_Exception_Happens()
        {
            var empty = 0;
            string query = null;
            var twitterService = new TwitterService();

            var tweets = twitterService.GetTweets(query, this.date);

            Assert.AreEqual(empty, tweets.Count());
        }
예제 #15
0
    public string GetTweetsOnHashTags(string hashTags)
    {
        var service = new TwitterService(consumerKey, consumerSecret);
        service.AuthenticateWith(accessToken, accessTokenSecret);
        SearchOptions so = new SearchOptions();
        so.Q = "#"+hashTags;

        so.Count = 100;
        var tweeting = service.Search(so);
        IEnumerable<TwitterStatus> returnValue = tweeting.Statuses;
        TweetsInst tweets = null;
        MulTweetInstance multweets = new MulTweetInstance();
        foreach (var twt in returnValue)
        {
            tweets = new TweetsInst();
            if (twt.Author.ScreenName != null)
            {
                tweets.author = twt.Author.ScreenName;
            }
            else { tweets.author = ""; }
            if (twt.Author.ProfileImageUrl != null)
            {
                tweets.UserImage = twt.Author.ProfileImageUrl;
            }
            else { tweets.UserImage = ""; }
            if (twt.User != null)
            {
                tweets.User_ID = Convert.ToString(twt.User.Id);
            }
            else { tweets.User_ID = null; }
            if (twt.Text != null)
            {
                tweets.tweet = twt.Text;
            }
            else { tweets.tweet = ""; }
            if (twt.Location != null)
            {
                tweets.latitude = Convert.ToString(twt.Location.Coordinates.Latitude);
            }
            else { tweets.latitude = ""; }
            if (twt.Location != null)
            {
                tweets.longitude = Convert.ToString(twt.Location.Coordinates.Longitude);
            }
            else { tweets.longitude = null; }
            if (twt.Place != null)
            {
                tweets.country = twt.Place.Country;
            }
            else { tweets.country = ""; }
                multweets.mulTweet.Add(tweets);
        }
        string output = JsonConvert.SerializeObject(multweets);
        return output;
    }
예제 #16
0
        public OAuthDialog(IAccessTokenStore accessTokenStore, ITwitterApplicationCredentials applicationCredentials)
        {
            _accessTokenStore = accessTokenStore;
            _applicationCredentials = applicationCredentials;
            InitializeComponent();

            pinTextBox.Visibility = Visibility.Hidden;
            pinLbl.Visibility = Visibility.Hidden;
            pinInstruction.Visibility = Visibility.Hidden;

            _service = new TwitterService(_applicationCredentials.ConsumerKey,
                                          _applicationCredentials.ConsumerSecret);
        }
        public void Can_get_basic_place()
        {
            var service = new TwitterService(_consumerKey, _consumerSecret);
            service.AuthenticateWith(_accessToken, _accessTokenSecret);

            // Presidio
            var place = service.GetPlace("df51dec6f4ee2b2c");
            Assert.IsNotNull(place);
            Assert.AreEqual("df51dec6f4ee2b2c", place.Id);
            Assert.AreEqual("Presidio", place.Name);
            Assert.AreEqual("United States", place.Country);
            Assert.AreEqual("US", place.CountryCode);
            Assert.AreEqual("Presidio, San Francisco", place.FullName);
        }
        public void TestSetup()
        {
            var consumerKey = ConfigurationManager.AppSettings["consumerKey"];
            var consumerSecret = ConfigurationManager.AppSettings["consumerSecret"];

            if (string.IsNullOrEmpty(consumerKey))
                Assert.Inconclusive("You must set the consumer key for integration tests to run.");
            if (string.IsNullOrEmpty(consumerSecret))
                Assert.Inconclusive("You must set the consumer secret for integration tests to run.");

            var auth = new ApplicationOnlyAuth(consumerKey, consumerSecret);
            _sut = new TwitterService(auth);

        }
예제 #19
0
        public void Given_Last_Tweet_Date_GetTweets_Can_Successfully_Retrieve_Latest_Values_From_Twitter()
        {
            var query = "#ltnet";
            var twitterService = new TwitterService();

            var tweets = twitterService.GetTweets(query, this.date).ToList();
            if (tweets.Count() > 1)
            {
                var fromDate = tweets.Last().Published;
                var latestTweets = twitterService.GetTweets(query, fromDate);

                Assert.That(tweets.Count(), Is.GreaterThan(latestTweets.Count()));
            }
        }
        public void Can_exchange_for_access_token()
        {
            var service = new TwitterService(_consumerKey, _consumerSecret);
            var requestToken = service.GetRequestToken();

            AssertResultWas(service, HttpStatusCode.OK);
            Assert.NotNull(requestToken);

            var uri = service.GetAuthorizationUri(requestToken);
            Process.Start(uri.ToString());

            Console.WriteLine("Press the any key when you have confirmation of your code transmission.");
            var verifier = "1234567"; // <-- Debugger breakpoint and edit with the actual verifier

            OAuthAccessToken accessToken = service.GetAccessToken(requestToken, verifier);
            AssertResultWas(service, HttpStatusCode.OK);
            Assert.IsNotNull(accessToken);
        }
예제 #21
0
        public void Can_initialize_generated_service()
        {
            _username = ConfigurationManager.AppSettings["TwitterUsername"];
            _password = ConfigurationManager.AppSettings["TwitterPassword"];

            _consumerKey = ConfigurationManager.AppSettings["OAuthConsumerKey"];
            _consumerSecret = ConfigurationManager.AppSettings["OAuthConsumerSecret"];
            _token = ConfigurationManager.AppSettings["OAuthAccessToken"];
            _tokenSecret = ConfigurationManager.AppSettings["OAuthTokenSecret"];

            _service = new TwitterService(_consumerKey, _consumerSecret);
            
            var ignore = ConfigurationManager.AppSettings["IgnoreStatusUpdateTests"];
            if(!bool.TryParse(ignore, out _ignoreTestsThatPostToTwitter))
            {
                _ignoreTestsThatPostToTwitter = true;
            }
        }
예제 #22
0
        static void Main(string[] args)
        {
            var consumerKey = ConfigurationManager.AppSettings["consumerKey"];
            if (string.IsNullOrEmpty(consumerKey))
            {
                Console.Write("Enter the consumer key: ");
                consumerKey = Console.ReadLine();
            }

            var consumerSecret = ConfigurationManager.AppSettings["consumerSecret"];
            if (string.IsNullOrEmpty(consumerSecret))
            {
                Console.Write("Enter the consumer secret: ");
                consumerSecret = Console.ReadLine();
            }

            Console.Write("Enter the desired screen name: ");
            var screenName = Console.ReadLine();

            Console.Write("Enter how many tweets to retrieve: ");
            var numberOfTweets = int.Parse(Console.ReadLine() ?? "");

            Console.WriteLine("Retrieving user timeline...");

            var auth = new ApplicationOnlyAuth(consumerKey, consumerSecret);
            var service = new TwitterService(auth);

            var timeline = service.GetUserTimeline(screenName, numberOfTweets);

            foreach (var tweet in timeline.Tweets)
            {
                Console.WriteLine();
                Console.WriteLine("{0:MM-dd-yyyy HH:mm:ss} : {1}", tweet.Created, tweet.Text);
                Console.WriteLine("Retweeted {0} time, favorited {1} times", tweet.RetweetCount.GetValueOrDefault(0),
                                  tweet.FavoriteCount.GetValueOrDefault(0));
            }

            Console.Write("Press any key to exit...");
            Console.ReadLine();
        }
예제 #23
0
        public void Can_get_direct_messages()
        {
            var service = new TwitterService(_consumerKey, _consumerSecret);
            service.AuthenticateWith(_accessToken, _accessTokenSecret);
            var dms = service.ListDirectMessagesReceived();

            Assert.IsNotNull(dms);
            Assert.IsTrue(dms.Count() <= 20);

            Assert.IsNotNull(service.Response);
            AssertResultWas(service, HttpStatusCode.OK);

            foreach (var tweet in dms)
            {
                Assert.IsNotNull(tweet.RawSource);
                Assert.AreNotEqual(default(DateTime), tweet.CreatedDate);

                Console.WriteLine("{0} said '{1}'", tweet.SenderScreenName, tweet.Text);
            }

            AssertRateLimitStatus(service);
        }
        public AuthenticateResult Authenticate(Server server, Connection connection, UserInfo userInfo)
        {
            // ニックネームとパスワードのチェック
            if (String.IsNullOrEmpty(userInfo.Nick))
            {
                return new AuthenticateResult(ErrorReply.ERR_NONICKNAMEGIVEN, "No nickname given");
            }
            if (String.IsNullOrEmpty(userInfo.Password))
            {
                return new AuthenticateResult(ErrorReply.ERR_PASSWDMISMATCH, "Password Incorrect");
            }

            // ログインチェック
            // この段階でTwitterServiceは作っておく
            connection.SendGatewayServerMessage("* アカウント認証を確認しています...");
            TwitterService twitter = new TwitterService(userInfo.UserName, userInfo.Password);
            User twitterUser = null;
            try
            {
                twitterUser = twitter.VerifyCredential();
            }
            catch (WebException we)
            {
                // Twitter の接続に失敗
                connection.SendGatewayServerMessage("* アカウント認証に失敗しました。ユーザ名またはパスワードを確認してください。");
                return new AuthenticateResult(ErrorReply.ERR_PASSWDMISMATCH, "Password Incorrect");
            }
            catch (Exception ex)
            {
                // Twitter の接続に失敗
                connection.SendGatewayServerMessage("* アカウント認証に失敗しました。ユーザ名またはパスワードを確認してください。内部的なエラーが発生しました。");
                Trace.TraceError(ex.ToString());
                return new AuthenticateResult(ErrorReply.ERR_PASSWDMISMATCH, "Password Incorrect");
            }
            connection.SendGatewayServerMessage(String.Format("* アカウント: {0} (ID:{1})", twitterUser.ScreenName, twitterUser.Id));

            return new TwitterAuthenticateResult(twitterUser); // 成功
        }
        public void Can_make_protected_resource_request_with_access_token()
        {
            var service = new TwitterService(_consumerKey, _consumerSecret);
            var request = service.GetRequestToken();

            AssertResultWas(service, HttpStatusCode.OK);
            Assert.NotNull(request);

            var uri = service.GetAuthorizationUri(request);
            Process.Start(uri.ToString());

            Console.WriteLine("Press the any key when you have confirmation of your code transmission.");
            var verifier = "1234567"; // <-- Debugger breakpoint and edit with the actual verifier

            var access = service.GetAccessToken(request, verifier);
            AssertResultWas(service, HttpStatusCode.OK);
            Assert.IsNotNull(access);

            service.AuthenticateWith(access.Token, access.TokenSecret);
            var mentions = service.ListTweetsMentioningMe(new ListTweetsMentioningMeOptions());
            Assert.IsNotNull(mentions);
            Assert.AreEqual(20, mentions.Count());
        }
        public void Authenticate()
        {
            var twitterService = new TwitterService();

            twitterService.Authenticate();
        }
예제 #27
0
        /// <summary>
        /// Loads the tweet text data for each id in the corpus.
        /// </summary>
        /// <param name="service">TwitterService</param>
        /// <param name="corpus">List of CorpusDataRow</param>
        /// <param name="outputPath">File path to output data file.</param>
        /// <returns>List of CorpusDataRow (with Tweet DTO populated).</returns>
        private static List <CorpusDataRow> LoadTweets(TwitterService service, List <CorpusDataRow> corpus, string outputPath)
        {
            List <CorpusDataRow> outputCorpus = new List <CorpusDataRow>();
            int skipCount = 0;

            for (int index = GetResumeIndex(corpus, outputPath); index < corpus.Count; index++)
            {
                CorpusDataRow row = corpus[index];

                // Fetch the tweet.
                var status = service.GetTweet(new GetTweetOptions()
                {
                    Id = row.Id
                });
                status.Text = status.Text.Replace(",", " ");
                status.Text = status.Text.Replace("\n", " ");
                status.Text = status.Text.Replace("\r", " ");
                status.Text = status.Text.Replace("\t", " ");

                if (service.Response.StatusCode == System.Net.HttpStatusCode.OK)
                {
                    // Convert the TwitterStatus to a Tweet DTO.
                    row.Tweet = Mapper.Map <TwitterStatus, Tweet>(status);

                    // Save the result to file.
                    SaveResult(row, outputPath);

                    outputCorpus.Add(row);

                    if ((index + 1) % 50 == 0)
                    {
                        Console.WriteLine("Processed " + (index + 1) + " tweets.");
                    }
                }
                else
                {
                    // Check the rate limit.
                    TwitterRateLimitStatus rateSearch = service.Response.RateLimitStatus;
                    if (rateSearch.RemainingHits < 1)
                    {
                        DateTime resetTime = rateSearch.ResetTime + TimeSpan.FromMinutes(1);

                        Console.WriteLine("Rate Limit reached. Sleeping until " + resetTime);
                        Thread.Sleep(resetTime - DateTime.Now);

                        // Try this record again.
                        index--;
                    }
                    else
                    {
                        // Some other error. Maybe 404. Skip this record.
                        skipCount++;
                        Console.WriteLine("Skipped " + skipCount + " records. Got " + service.Response.StatusCode + ".");
                    }
                }
            }

            Console.WriteLine("Saved " + outputCorpus.Count + ", Skipped " + skipCount + ".");

            return(outputCorpus);
        }
        public IHttpActionResult GetFeedPath(string token, string tokenSecret, double latitude, double longitude,
                                             string screenname)
        {
            var settingsReader = new AppSettingsReader();
            var consumerKey    = settingsReader.GetValue("TwitterKey", typeof(string)).ToString();
            var consumerSecret = settingsReader.GetValue("TwitterSecret", typeof(string)).ToString();
            var service        = new TwitterService(consumerKey, consumerSecret);

            service.AuthenticateWith(token, tokenSecret);

            var response = service.ListTweetsOnUserTimeline(new ListTweetsOnUserTimelineOptions
            {
                ScreenName = screenname,
                Count      = 5
            }) ?? new List <TwitterStatus>();

            var statuses = new List <Tweets>();

            foreach (var twitterStatus in response)
            {
                if (twitterStatus.Entities == null)
                {
                    continue;
                }
                var urls      = twitterStatus.Entities.Media.Select(rawLinks => rawLinks.MediaUrl).ToList();
                var encrypted = false;
                foreach (var media in twitterStatus.Entities.Media)
                {
                    if (media.MediaType != TwitterMediaType.Photo)
                    {
                        continue;
                    }

                    using (var client = new WebClient())
                    {
                        var image = client.DownloadData(media.MediaUrl);
                        var ms    = new MemoryStream(image);
                        var bmp   = new Bitmap(Image.FromStream(ms));

                        var extracted        = Steganography.Extract(bmp);
                        var decryptedMessage = Encryption.Decrypt(extracted);
                        if (string.IsNullOrEmpty(decryptedMessage))
                        {
                            continue;
                        }

                        var embedded = new JavaScriptSerializer().Deserialize <EmbeddedDetails>(decryptedMessage);

                        var currentLocation = new GeoCoordinate
                        {
                            Latitude  = latitude,
                            Longitude = longitude
                        };
                        var requiredLocation = new GeoCoordinate
                        {
                            Latitude  = embedded.Latitude,
                            Longitude = embedded.Longitude
                        };

                        if (!GeoLocation.WithinRadius(currentLocation, requiredLocation))
                        {
                            continue;
                        }

                        embedded.FinalMystery = null;

                        encrypted = true;
                        statuses.Add(new Tweets
                        {
                            Text             = twitterStatus.Text,
                            ScreenName       = twitterStatus.User.ScreenName,
                            Name             = twitterStatus.User.Name,
                            MediaUrls        = urls,
                            ProfileImageUrl  = twitterStatus.User.ProfileImageUrl,
                            DecryptedMessage = embedded
                        });
                    }
                }
                if (!encrypted)
                {
                    statuses.Add(new Tweets
                    {
                        Text            = twitterStatus.Text,
                        ScreenName      = twitterStatus.User.ScreenName,
                        Name            = twitterStatus.User.Name,
                        MediaUrls       = urls,
                        ProfileImageUrl = twitterStatus.User.ProfileImageUrl
                    });
                }
            }

            return(Ok(statuses));
        }
예제 #29
0
파일: Jarvis.cs 프로젝트: oslboreal/twsc
 /// <summary>
 /// Static constructor.
 /// </summary>
 static Jarvis()
 {
     // Inicializamos el Servicio de Twitter empleando el uso de la lib TweetSharp.
     Jarvis.mainService = new TwitterService(costumerKey, costumerSecret, accesToken, accesTokenSecret);
 }
        public void GetRecentTweets_WithOK_True()
        {
            // Arrange
            var restMock            = new Mock <IRestClient>();
            var service             = new TwitterService(new TokenService("Test"));
            var twitterResponseMock = new List <TwitterResponse>()
            {
                new TwitterResponse()
                {
                    UID       = "1",
                    CreatedAt = DateTime.Now.AddHours(-1),
                    FullText  = "Test Data",
                    Truncated = false
                },
                new TwitterResponse()
                {
                    UID       = "2",
                    CreatedAt = DateTime.Now.AddHours(-1),
                    FullText  = "Test Data",
                    Truncated = false
                },
                new TwitterResponse()
                {
                    UID       = "3",
                    CreatedAt = DateTime.Now.AddHours(-1),
                    FullText  = "Test Data",
                    Truncated = false
                },
                new TwitterResponse()
                {
                    UID       = "4",
                    CreatedAt = DateTime.Now.AddHours(-1),
                    FullText  = "Test Data",
                    Truncated = false
                },
                new TwitterResponse()
                {
                    UID       = "5",
                    CreatedAt = DateTime.Now.AddHours(-1),
                    FullText  = "Test Data",
                    Truncated = false
                },
                new TwitterResponse()
                {
                    UID       = "6",
                    CreatedAt = DateTime.Now.AddHours(-1),
                    FullText  = "Test Data",
                    Truncated = false
                }
            };

            // Act
            restMock
            .Setup(x => x.Execute <List <TwitterResponse> >(It.IsAny <RestRequest>()))
            .Returns(new RestResponse <List <TwitterResponse> >()
            {
                StatusCode     = HttpStatusCode.OK,
                ResponseStatus = ResponseStatus.Completed,
                Data           = twitterResponseMock
            });

            service.Client = restMock.Object;

            // Assert
            Assert.Equal(twitterResponseMock, service.GetRecentTweets(12));
        }
예제 #31
0
 internal TwitterSearchEndpoint(TwitterService service)
 {
     Service = service;
 }
예제 #32
0
        public static void tweetpc()
        {
            string apiKey       = "your_api_key";
            string apiSecret    = "your_api_secret";
            string accessToken  = "_your_access_token";
            string accesstokSec = "your_access_token_sec";
            var    service      = new TwitterService(apiKey, apiSecret);

            service.AuthenticateWith(accessToken, accesstokSec);
            string path   = @"C:\Users\ay-_-\Documents\Picture Bot"; //path which includes the pictures
            int    number = chooseNum();

            var sorted = (from fn in Directory.GetFiles(path)
                          let m = Regex.Match(fn, @"(?<order>\d+)")
                                  where m.Success
                                  let n = int.Parse(m.Groups["order"].Value)
                                          orderby n
                                          select fn).ToList();



            var    photo = sorted[number];
            string myval = photo.ToString();



            using (var stream = new FileStream(myval, FileMode.Open))
            {
                var result = service.SendTweetWithMedia(new SendTweetWithMediaOptions
                {
                    Images = new Dictionary <string, Stream> {
                        { "image bot", stream }
                    }
                });

                if (File.Exists(myval))
                {
                    File.Delete(myval);
                }
            }

            //********************** TWEET BING PICTURE************************

            string path2 = @"C:\Users\ay-_-\Documents\Bing Picture";


            var sorted2 = (from fn in Directory.GetFiles(path2)
                           let m = Regex.Match(fn, @"(?<order>\d+)")
                                   where m.Success
                                   let n = int.Parse(m.Groups["order"].Value)
                                           orderby n
                                           select fn).ToList();



            var    photo2 = sorted2[0];
            string myval2 = photo2.ToString();

            string link = "https://www.bing.com/ " + DateTime.Now;


            using (var stream2 = new FileStream(myval2, FileMode.Open))
            {
                var result = service.SendTweetWithMedia(new SendTweetWithMediaOptions
                {
                    Status = link,
                    Images = new Dictionary <string, Stream> {
                        { "image bot tweet", stream2 }
                    }
                });



                if (File.Exists(myval2))
                {
                    File.Delete(myval2);
                }
            }
        }
예제 #33
0
 public frmHome()
 {
     InitializeComponent();
     service = new TwitterService(ConsumerKey, ConsumerSecret, AccessToken, AccessSecret);
 }
예제 #34
0
 private static void AssertRateLimitStatus(TwitterService service)
 {
     var rate = service.Response.RateLimitStatus;
     Assert.IsNotNull(rate);
     Assert.AreNotEqual(0, rate.HourlyLimit);
     Console.WriteLine();
     Console.WriteLine("{0} / {1} API calls remaining", rate.RemainingHits, rate.HourlyLimit);
 }
예제 #35
0
 internal TwitterAccountEndpoint(TwitterService service)
 {
     Service = service;
 }
예제 #36
0
        public void Can_get_entities_on_direct_messages()
        {
            var service = new TwitterService { IncludeEntities = true };            
            service.AuthenticateWith(_consumerKey, _consumerSecret, _accessToken, _accessTokenSecret);
            
            var tweets = service.ListDirectMessagesSent(new ListDirectMessagesSentOptions());
            if(!tweets.Any())
            {
                Assert.Ignore("No direct messages available to verify entities");
            }

            Console.WriteLine(service.Response.Response);

            foreach (var tweet in tweets)
            {
                Assert.IsNotNull(tweet.Entities);
                var coalesced = tweet.Entities.Coalesce();
                var text = tweet.Text;

                Assert.IsNotNull(tweet.TextAsHtml);
                Console.WriteLine("Tweet: " + text);
                Console.WriteLine("HTML: " + tweet.TextAsHtml);
                foreach(var entity in coalesced)
                {
                    switch(entity.EntityType)
                    {
                        case TwitterEntityType.HashTag:
                            var hashtag = ((TwitterHashTag) entity).Text;
                            Console.WriteLine(hashtag);
                            var hashtagText = text.Substring(entity.StartIndex, entity.EndIndex - entity.StartIndex);
                            Assert.AreEqual("#" + hashtag, hashtagText);
                            break;
                        case TwitterEntityType.Mention:
                            var mention = ((TwitterMention) entity).ScreenName;
                            Console.WriteLine(mention);
                            var mentionText = text.Substring(entity.StartIndex, entity.EndIndex - entity.StartIndex);
                            Assert.AreEqual("@" + mention, mentionText);
                            break;
                        case TwitterEntityType.Url:
                            var url = ((TwitterUrl) entity).Value;
                            Console.WriteLine(url);
                            var urlText = text.Substring(entity.StartIndex, entity.EndIndex - entity.StartIndex);
                            Assert.AreEqual(url, urlText);
                            break;
                        default:
                            throw new ArgumentOutOfRangeException();
                    }
                }
                Console.WriteLine();
            }
        }
예제 #37
0
파일: Twitter.cs 프로젝트: wncoder/Wexflow
        public override TaskStatus Run()
        {
            Info("Sending tweets...");

            bool success           = true;
            bool atLeastOneSucceed = false;

            var files = SelectFiles();

            if (files.Length > 0)
            {
                TwitterService service;
                try
                {
                    service = new TwitterService();
                    service.AuthenticateWith(ConsumerKey, ConsumerSecret, AccessToken, AccessTokenSecret);
                    Info("Authentication succeeded.");
                }
                catch (ThreadAbortException)
                {
                    throw;
                }
                catch (Exception e)
                {
                    ErrorFormat("Authentication failed.", e);
                    return(new TaskStatus(Status.Error, false));
                }

                foreach (FileInf file in files)
                {
                    try
                    {
                        var xdoc = XDocument.Load(file.Path);
                        foreach (XElement xTweet in xdoc.XPathSelectElements("Tweets/Tweet"))
                        {
                            var status = xTweet.Value;
                            var tweet  = service.SendTweet(new SendTweetOptions {
                                Status = status
                            });
                            InfoFormat("Tweet '{0}' sent. id: {1}", status, tweet.Id);
                        }

                        if (!atLeastOneSucceed)
                        {
                            atLeastOneSucceed = true;
                        }
                    }
                    catch (ThreadAbortException)
                    {
                        throw;
                    }
                    catch (Exception e)
                    {
                        ErrorFormat("An error occured while sending the tweets of the file {0}.", e, file.Path);
                        success = false;
                    }
                }
            }

            var tstatus = Status.Success;

            if (!success && atLeastOneSucceed)
            {
                tstatus = Status.Warning;
            }
            else if (!success)
            {
                tstatus = Status.Error;
            }

            Info("Task finished.");
            return(new TaskStatus(tstatus, false));
        }
예제 #38
0
 internal TwitterStatusesEndpoint(TwitterService service)
 {
     Service = service;
 }
예제 #39
0
 public TwitterApi(ApiKeys keys)
 {
     _twitterService = new TwitterService(keys.ConsumerKey, keys.ConsumerKeySecret, keys.AccessToken, keys.AccessTokenSecret);
 }
예제 #40
0
        public ActionResult ExternalLoginConfirmation(RegisterExternalLoginModel model, string returnUrl)
        {
            string provider       = null;
            string providerUserId = null;

            if (User.Identity.IsAuthenticated || !OAuthWebSecurity.TryDeserializeProviderUserId(model.ExternalLoginData, out provider, out providerUserId))
            {
                return(RedirectToAction("Manage"));
            }

            if (ModelState.IsValid)
            {
                // Insert a new user into the database
                using (UsersContext db = new UsersContext())
                {
                    UserProfile user = db.UserProfiles.FirstOrDefault(u => u.UserName.ToLower() == model.UserName.ToLower());
                    // Check if user already exists
                    if (user == null)
                    {
                        // Insert name into the profile table
                        UserProfile profile = db.UserProfiles.Add(new UserProfile {
                            UserName = model.UserName
                        });
                        db.SaveChanges();

                        OAuthWebSecurity.CreateOrUpdateAccount(provider, providerUserId, model.UserName);
                        OAuthWebSecurity.Login(provider, providerUserId, createPersistentCookie: false);
                        //need to check to see if it is facebook or twitter
                        if (provider == "twitter")
                        {
                            if (Session["AccessToken"] != null && Session["AccessTokenSecret"] != null) //used to distinugish between facebook and twitter regisration
                            {
                                //"9kCMAgidv1NzN8TfMVgZw", "RimlGsenvejdoRlw0NSazYzXJBO6olF2IBMJcw11Uc"
                                //creating new tweetsharp service
                                TwitterService service = new TwitterService(Settings.Settings.TwitterConsumerKey, Settings.Settings.TwitterConsumerSecret, Session["AccessToken"].ToString(), Session["AccessTokenSecret"].ToString());
                                TwitterUser    me      = service.VerifyCredentials();
                                ContextDb      _db     = new ContextDb();
                                Models.User    temp    = new Models.User {
                                    UserId = profile.UserId, Email = model.Email, Image = me.ProfileImageUrl, Name = me.Name, RemainingProposals = 100, RemainingVotes = 100
                                };
                                temp = _db.User.Add(temp);
                                _db.SaveChanges();
                                CheckChanceState(temp.UserId);
                                DatabaseCallsApi _api = new DatabaseCallsApi();
                                _api.AddOrUpdateService(temp.UserId, "twitter", Session["AccessToken"].ToString(), Session["AccessTokenSecret"].ToString());
                                Session.Remove("AccessToken");
                                Session.Remove("AccessTokenSecret");
                            }
                        }
                        else
                        {
                            //setting new facebook service
                            FacebookAPI facebook     = new FacebookAPI(FacebookToken);
                            dynamic     facebookData = facebook.GetUsersData();
                            if (facebookData != null)
                            {
                                ContextDb _db = new ContextDb();

                                Models.User temp = new Models.User {
                                    UserId = profile.UserId, Email = facebookData.email.ToString(), Image = facebookData.picture["data"]["url"].ToString(), Name = facebookData.name.ToString(), RemainingProposals = 1, RemainingVotes = 3
                                };
                                temp = _db.User.Add(temp);
                                _db.SaveChanges();
                                CheckChanceState(temp.UserId);
                                DatabaseCallsApi _api = new DatabaseCallsApi();
                                _api.AddOrUpdateService(temp.UserId, Provider, FacebookToken);
                            }
                        }

                        return(RedirectToLocal(returnUrl));
                    }
                    else
                    {
                        ModelState.AddModelError("UserName", "User name already exists. Please enter a different user name.");
                    }
                }
            }

            ViewBag.ProviderDisplayName = OAuthWebSecurity.GetOAuthClientData(provider).DisplayName;
            ViewBag.ReturnUrl           = returnUrl;
            return(View(model));
        }
예제 #41
0
 public ReplyBot()
 {
     //connect to Twitter with login credentials
     service = new TwitterService(ConsumerKey, ConsumerSecret);
     service.AuthenticateWith(AccessToken, AccessTokenSecret);
 }
    private void DoWhatThisAppNeedToDo()
    {
        DataTable dt = new DataTable();
        DataRow   dr = null;

        dt.Columns.Add(new DataColumn("No.", typeof(string)));
        dt.Columns.Add(new DataColumn("Name", typeof(string)));
        dt.Columns.Add(new DataColumn("Location", typeof(string)));
        dt.Columns.Add(new DataColumn("Tweet", typeof(string)));
        dt.Columns.Add(new DataColumn("Semantic_Polarity", typeof(string)));



        //Client client = new Client("9091d4c1", "88e03d5f1f488db656ed6ab5d4a7a91e");

        TwitterClientInfo twitterClientInfo = new TwitterClientInfo();

        twitterClientInfo.ConsumerKey    = "jfaKfFmSdtvZRAwO8waULkGqK";
        twitterClientInfo.ConsumerSecret = "4a9RpM2ujRJb9WoE3avzwvvNUyjQC0ox3e0mess2YBAmcuV7MD";

        TwitterService service = new TwitterService(twitterClientInfo);

        service.AuthenticateWith("368763386-jgygtatu9MZLGeEvR6pbGKvL1rjLSapSW6Q5Dq5m",
                                 "BZl9edQUEk6uGpeLi63gXGzcae1kOSpdTNi3kyrio9VLT");


        //Sentiment sentiment = null;

        string maxid = "100000"; // dummy value

        string count         = "50";
        string polarity      = "";
        int    tweetcount    = 1;
        int    positiveCount = 0;
        int    negativeCount = 0;
        int    neutralCount  = 0;

        if (maxid != null)
        {
            var tweets =
                service.Search(new SearchOptions
            {
                Q          = searchText,
                Count      = Convert.ToInt32(count),
                Lang       = "en",
                Resulttype = TwitterSearchResultType.Mixed
            });

            List <TwitterStatus> resultList = new List <TwitterStatus>(tweets.Statuses);
            maxid = resultList.Last().IdStr;


            if (tweets != null)
            {
                foreach (var tweet in tweets.Statuses)
                {
                    if (tweet.Text != null)
                    {
                        //sentiment = client.Sentiment(text: tweet.Text);
                    }

                    if (tweet.Text.Contains("🙂") || tweet.Text.Contains("❤️") || tweet.Text.Contains("👍") || tweet.Text.Contains("😡"))
                    {
                        polarity = "positive";
                    }
                    else if (tweet.Text.Contains("😛") || tweet.Text.Contains("😠") || tweet.Text.Contains("😡") || tweet.Text.Contains("☹️") || tweet.Text.Contains("👎"))
                    {
                        polarity = "negative";
                    }
                    else
                    {
                        //polarity = sentiment.Polarity;
                    }

                    if (polarity == "positive")
                    {
                        positiveCount++;
                    }
                    else if (polarity == "negative")
                    {
                        negativeCount++;
                    }
                    else if (polarity == "neutral")
                    {
                        neutralCount++;
                    }



                    dr = dt.NewRow();

                    dr["No."]      = tweetcount;
                    dr["Name"]     = tweet.User.Name;
                    dr["Location"] = tweet.User.Location;
                    dr["Tweet"]    = tweet.Text;
                    if (tweet.Text != null)
                    {
                        dr["Semantic_Polarity"] = ""; //polarity;
                    }
                    dt.Rows.Add(dr);
                    //ResultSearch.Add(new KeyValuePair<String, String>(tweet.Id.ToString(), tweet.Text));
                    tweetcount++;
                }
            }
            else
            {
                Response.Write("<script>alert('Fail')</script>");
            }

            while (maxid != null && tweetcount < Convert.ToInt32(count))
            {
                maxid  = resultList.Last().IdStr;
                tweets =
                    service.Search(new SearchOptions
                {
                    Q          = searchText,
                    Count      = Convert.ToInt32(count),
                    MaxId      = Convert.ToInt64(maxid),
                    Lang       = "en",
                    Resulttype = TwitterSearchResultType.Mixed
                });                                //resultList = new List<TwitterStatus>(tweets_search.Statuses);
                foreach (var tweet in tweets.Statuses)
                {
                    try
                    {
                        if (tweet.Text != null)
                        {
                            //sentiment = client.Sentiment(text: tweet.Text);
                        }

                        dr = dt.NewRow();
                        if (tweet.Text.Contains("🙂") || tweet.Text.Contains(":)") || tweet.Text.Contains(":-)") || tweet.Text.Contains("❤️") || tweet.Text.Contains("👍"))
                        {
                            polarity = "positive";
                        }
                        else if (tweet.Text.Contains("😛") || tweet.Text.Contains(":P") || tweet.Text.Contains(":-P") || tweet.Text.Contains("😠") || tweet.Text.Contains("😡") || tweet.Text.Contains("☹️") || tweet.Text.Contains("👎"))
                        {
                            polarity = "negative";
                        }
                        else
                        {
                            //polarity = sentiment.Polarity;
                        }

                        if (polarity == "positive")
                        {
                            positiveCount++;
                        }
                        else if (polarity == "negative")
                        {
                            negativeCount++;
                        }
                        else if (polarity == "neutral")
                        {
                            neutralCount++;
                        }

                        dr["No."]      = tweetcount;
                        dr["Name"]     = tweet.User.Name;
                        dr["Location"] = tweet.User.Location;
                        dr["Tweet"]    = tweet.Text;
                        if (tweet.Text != null)
                        {
                            dr["Semantic_Polarity"] = ""; //polarity;
                        }
                        dt.Rows.Add(dr);
                        //ResultSearch.Add(new KeyValuePair<String, String>(tweet.Id.ToString(), tweet.Text));
                        tweetcount++;
                    }
                    catch { }
                }
            }
        }


        /*double total = positiveCount + negativeCount + neutralCount;
         *
         * double postivePercentage = (positiveCount / total) * 100;
         * double negativePercentage = (negativeCount / total) * 100;
         * double neutralPercentage = (neutralCount / total) * 100;
         *
         * postiveTextBox.Visible = true;
         * negativeTextBox.Visible = true;
         * neutralTextBox.Visible = true;
         *
         * postiveTextBox.Text = postivePercentage.ToString()+"%";
         * negativeTextBox.Text= negativePercentage.ToString()+"%";
         * neutralTextBox.Text=neutralPercentage.ToString()+"%";*/



        ViewState["CurrentTable"] = dt;

        GridView1.DataSource = dt;
        GridView1.DataBind();
    }
예제 #43
0
 private void CreateAuthenticatedService(string consumerKey, string consumerSecret, string accessToken, string accessTokenSecret)
 {
     _twitterService = new TwitterService(consumerKey, consumerSecret);
     _twitterService.AuthenticateWith(accessToken, accessTokenSecret);
 }
예제 #44
0
 /// <summary>
 /// Static constructor.
 /// </summary>
 static Jarvis()
 {
     Jarvis.mainService = new TwitterService(config.CostumerKey, config.CostumerSecret, config.AccessToken, config.AccessTokenSecret);
 }
예제 #45
0
        public JsonResult Index(string searchString)
        {
            var srvc = new TwitterService(this._context, searchString);

            return(Json(srvc.ViewModel, JsonRequestBehavior.DenyGet));
        }
 internal TwitterFavoritesEndpoint(TwitterService service)
 {
     Service = service;
 }
        public IHttpActionResult GuessAnswer(GuessAnswer guessAnswer)
        {
            var settingsReader = new AppSettingsReader();
            var consumerKey    = settingsReader.GetValue("TwitterKey", typeof(string)).ToString();
            var consumerSecret = settingsReader.GetValue("TwitterSecret", typeof(string)).ToString();
            var service        = new TwitterService(consumerKey, consumerSecret);

            service.AuthenticateWith(guessAnswer.Token, guessAnswer.TokenSecret);

            var response = service.ListTweetsOnUserTimeline(new ListTweetsOnUserTimelineOptions
            {
                ScreenName = guessAnswer.Screenname
            }) ?? new List <TwitterStatus>();

            var statuses = new List <Tweets>();

            var missionName = string.Empty;

            var result = false;

            foreach (var twitterStatus in response)
            {
                if (twitterStatus.Entities == null)
                {
                    continue;
                }
                var urls = twitterStatus.Entities.Media.Select(rawLinks => rawLinks.MediaUrl).ToList();
                foreach (var media in twitterStatus.Entities.Media)
                {
                    if (media.MediaType != TwitterMediaType.Photo)
                    {
                        continue;
                    }

                    using (var client = new WebClient())
                    {
                        var image = client.DownloadData(media.MediaUrl);
                        var ms    = new MemoryStream(image);
                        var bmp   = new Bitmap(Image.FromStream(ms));

                        var extracted        = Steganography.Extract(bmp);
                        var decryptedMessage = Encryption.Decrypt(extracted);
                        if (string.IsNullOrEmpty(decryptedMessage))
                        {
                            continue;
                        }

                        var embedded = new JavaScriptSerializer().Deserialize <EmbeddedDetails>(decryptedMessage);

                        if (embedded.FinalMystery != null)
                        {
                            if (embedded.FinalMystery.ToLower().Equals(guessAnswer.Guess.ToLower()))
                            {
                                result      = true;
                                missionName = embedded.Mystery;
                            }
                        }
                    }
                }
            }
            if (result)
            {
                service.AuthenticateWith(guessAnswer.Token, guessAnswer.TokenSecret);

                service.SendTweet(new SendTweetOptions
                {
                    Status = $"{guessAnswer.Screenname} mission '{missionName}' accomplished!",
                });

                return(Ok(new GuessResult
                {
                    message = "Congratulations! You win!"
                }));
            }

            return(Ok(new GuessResult {
                message = "Incorrect, try again."
            }));
        }
예제 #48
0
        public async Task <ActionResult> PostUserFeed(
            string Message,
            string Link,
            string Privacy,
            IList <string> FriendList)
        {
            if (string.IsNullOrEmpty(Message))
            {
                return(Json("Can not post a stutas without a message"));
            }
            string msg = "";
            var    db  = HttpContext.GetOwinContext().Get <ApplicationDbContext>();

            // find the user. I am skipping validations and other checks.
            var userid = User.Identity.GetUserId();
            var user   = db.Users.Where(x => x.Id == userid).FirstOrDefault();

            if (user.facebook_connect && user.facebook_chk)
            {
                msg = msg + "Post to facebook ";

                if (string.IsNullOrEmpty(Privacy))
                {
                    Privacy = "EVERYONE";
                }
                string linkParameter = string.Empty;
                if (!string.IsNullOrEmpty(Link))
                {
                    linkParameter = string.Format("&link={0}", Link);
                }
                string FriendTagList = string.Empty;
                if (FriendList != null)
                {
                    FriendTagList = string.Format("&place=155021662189&tags={0}", string.Join(",", FriendList));
                }
                #region facebook garph api post to user feed

                var access_token = HttpContext.Items["access_token"].ToString();
                if (!string.IsNullOrEmpty(access_token))
                {
                    var appsecret_proof = access_token.generateAppSecretProof();
                    var fb = new FacebookClient(access_token);

                    #region post

                    dynamic myInfo = await fb.PostTaskAsync(
                        (string.Format("me/feed?message={0}{1}{2}",
                                       Message,
                                       linkParameter,
                                       FriendTagList) +
                         "&privacy={{'value':'" + Privacy + "'}}")
                        .GraphAPICall(appsecret_proof), null);

                    #endregion
                }
                else
                {
                    msg = "Missing Access Token";
                }
                #endregion
            }
            if (user.twitter_connect && user.twitter_chk)
            {
                msg = msg + " Post to twitter ";
                #region code for post in twitter

                var service = new TwitterService(_consumerKey, _consumerSecret);
                service.AuthenticateWith(UserToken.Token, UserToken.TokenSecert);
                var result = service.SendTweet(new SendTweetOptions
                {
                    Status = Message
                });
                #endregion
            }
            if (user.google_connect && user.google_chk)
            {
                msg = msg + " Post to google+ ";
            }
            user.twitter_chk  = false;
            user.facebook_chk = false;
            user.google_chk   = false;
            db.SaveChanges();

            return(Json(msg));
        }
예제 #49
0
        async void OnTapGestRecogTapOne(object sender, EventArgs args)
        {
            bool answer = await DisplayAlert("Challenge Complete", "Share Out a Tweet?", "Yes", "No");

            // var labelTest = new Uri("https://apple.co/31pfZiv");
            var labelTest = new Uri("https://bit.ly/2ZPx82e");

            if (answer == true)
            {
                if (App.User.IsAuthenticated == true)
                {
                    var testAuth = TwitterService.GetTwitterContext();

                    _auth = testAuth.Authorizer;

                    try
                    {
                        using (var ctx = new TwitterContext(_auth))
                        {
                            await ctx.TweetAsync("Green Shoots " + saveChallenge + " challenge is complete!" + " learn more @ " + labelTest);
                            await DisplayAlert("Green Shoots", "Congrats - Tweet Sent Out", "OK");
                        }
                    }
                    catch (TwitterQueryException ex) when(ex.StatusCode == HttpStatusCode.Forbidden)  // In case of duplicate
                    {
                        // return false;
                        await DisplayAlert("Green Shoots", "Duplicate Tweet", "OK");
                    }
                }
                else if (App.User.IsAuthenticated == false)
                {
                    var twitterAuth = new XAuthAuthorizer();
                    var cred        = new InMemoryCredentialStore();

                    cred.ConsumerKey      = loggedInAccount.Properties["oauth_consumer_key"];
                    cred.ConsumerSecret   = loggedInAccount.Properties["oauth_consumer_secret"];
                    cred.OAuthToken       = loggedInAccount.Properties["oauth_token"];
                    cred.OAuthTokenSecret = loggedInAccount.Properties["oauth_token_secret"];
                    cred.UserID           = ulong.Parse(loggedInAccount.Properties["user_id"]);
                    cred.ScreenName       = loggedInAccount.Properties["screen_name"];

                    auth0 = new PinAuthorizer()
                    {
                        CredentialStore = cred,
                    };

                    try
                    {
                        var TwitterCtx = new TwitterContext(auth0);
                        await TwitterCtx.TweetAsync("Green Shoots " + saveChallenge + " challenge is complete!" + " learn more @ " + labelTest);
                        await DisplayAlert("Green Shoots", "Congrats - Tweet Sent Out", "OK");
                    }
                    catch (TwitterQueryException ex) when(ex.StatusCode == HttpStatusCode.Forbidden)  // In case of duplicate
                    {
                        // return false;
                        await DisplayAlert("Green Shoots", "Duplicate Tweet", "OK");
                    }
                }
            }
            else if (answer == false)
            {
            }
        }
예제 #50
0
 public TwitterManeger()
 {
     _service = new TwitterService(_consumerKey, _consumerSecret);
     _service.AuthenticateWith(_accessToken, _accessTokenSecret);
 }
예제 #51
0
        private static List <CorpusDataRow> SearchTweets(string keyword, Sentiment sentiment, int count, TwitterService service, string outputPath)
        {
            List <CorpusDataRow> outputCorpus = new List <CorpusDataRow>();
            long?lastId    = null;
            int  index     = 0;
            int  skipCount = 0;

            keyword += sentiment == Sentiment.Positive ? " :)" : " :(";

            while (skipCount == 0 && outputCorpus.Count < count)
            {
                // Fetch the tweet.
                var statusList = service.Search(new SearchOptions()
                {
                    Q = keyword, Lang = "en", IncludeEntities = false, Count = count, MaxId = lastId
                });
                lastId = statusList.Statuses.Last().Id;
                foreach (var status in statusList.Statuses)
                {
                    if (!status.Text.StartsWith("RT") && !status.Text.Contains(":P") &&
                        !((status.Text.Contains(":)") || status.Text.Contains(":-)") || status.Text.Contains(": )") || status.Text.Contains(":D") || status.Text.Contains("=)")) &&
                          (status.Text.Contains(":(") || status.Text.Contains(":-(") || status.Text.Contains(": ("))) &&
                        outputCorpus.Where(c => c.Tweet.Text == status.Text).Count() == 0)
                    {
                        status.Text = status.Text.Replace(",", " ");
                        status.Text = status.Text.Replace("\n", " ");
                        status.Text = status.Text.Replace("\r", " ");
                        status.Text = status.Text.Replace("\t", " ");
                        status.Text = status.Text.Replace(":)", " ");
                        status.Text = status.Text.Replace(":-)", " ");
                        status.Text = status.Text.Replace(": )", " ");
                        status.Text = status.Text.Replace(":D", " ");
                        status.Text = status.Text.Replace("=)", " ");
                        status.Text = status.Text.Replace(":(", " ");
                        status.Text = status.Text.Replace(":-(", " ");
                        status.Text = status.Text.Replace(": (", " ");

                        if (service.Response.StatusCode == System.Net.HttpStatusCode.OK)
                        {
                            // Convert the TwitterStatus to a Tweet DTO.
                            CorpusDataRow row = new CorpusDataRow();
                            row.Id        = status.Id;
                            row.Keyword   = keyword;
                            row.Tweet     = Mapper.Map <TwitterStatus, Tweet>(status);
                            row.Sentiment = sentiment;

                            // Save the result to file.
                            SaveResult(row, outputPath);

                            outputCorpus.Add(row);

                            if ((index + 1) % 50 == 0)
                            {
                                Console.WriteLine("Processed " + (index + 1) + " tweets.");
                            }
                        }
                        else
                        {
                            // Check the rate limit.
                            TwitterRateLimitStatus rateSearch = service.Response.RateLimitStatus;
                            if (rateSearch.RemainingHits < 1)
                            {
                                DateTime resetTime = rateSearch.ResetTime + TimeSpan.FromMinutes(1);

                                Console.WriteLine("Rate Limit reached. Sleeping until " + resetTime);
                                Thread.Sleep(resetTime - DateTime.Now);

                                // Try this record again.
                                index--;
                            }
                            else
                            {
                                // Some other error. Maybe 404. Skip this record.
                                skipCount++;
                                Console.WriteLine("Skipped " + skipCount + " records. Got " + service.Response.StatusCode + ".");
                            }
                        }
                    }
                }
            }

            Console.WriteLine("Saved " + outputCorpus.Count + ", Skipped " + skipCount + ".");

            return(outputCorpus);
        }
예제 #52
0
 /// <summary>
 /// Twitter情報取得
 /// </summary>
 /// <param name="service"></param>
 public static void SetServiceProp(TwitterService service)
 {
     MainService = service;
 }
예제 #53
0
        public static void StatusChanged()
        {
            SqlContext.Pipe.Send("StatusChanged");

            SqlCommand     command     = null;
            SqlDataAdapter dataAdapter = null;
            DataSet        ds          = null;

            try
            {
                var triggContext = SqlContext.TriggerContext;

                switch (triggContext.TriggerAction)
                {
                case TriggerAction.Update:

                    SqlContext.Pipe.Send("TriggerAction.Update");

                    /* Retrieve the connection that the trigger is using. */
                    using (var connection = new SqlConnection(@"context connection=true"))
                    {
                        connection.Open();

                        command     = new SqlCommand(@"SELECT * FROM INSERTED;", connection);
                        dataAdapter = new SqlDataAdapter(command);
                        ds          = new DataSet();

                        dataAdapter.Fill(ds);

                        var table = ds.Tables[0];
                        var row   = table.Rows[0];

                        var columns = table.Columns;

                        var statusText = (String)row["StatusText"] ?? "";
                        var memberId   = (Int32)row["MemberID"];

                        SqlContext.Pipe.Send(String.Format("StatusText = {0}", statusText));
                        SqlContext.Pipe.Send(String.Format("MemberID = {0}", memberId));

                        var targetAccount = MemberAccount.GetMemberAccountByMemberID(memberId, connection);

                        if (MemberAccount.IsTwitterReady(targetAccount))
                        {
                            SqlContext.Pipe.Send("Target account is Twitter ready.");
                            TwitterService.UpdateStatus(targetAccount.Username, targetAccount.Password, statusText);
                            SqlContext.Pipe.Send("Twitter status updated successfully.");
                        }
                    }

                    break;
                }
            }
            catch (Exception e)
            {
                SqlContext.Pipe.Send(String.Format("StatusChanged trigger exception: {0}", e.Message));
            }
            finally
            {
                try
                {
                    if (command != null)
                    {
                        command.Dispose();
                    }

                    if (ds != null)
                    {
                        ds.Dispose();
                    }

                    if (dataAdapter != null)
                    {
                        dataAdapter.Dispose();
                    }
                }
                catch { }
            }
        }
 internal TwitterListsEndpoint(TwitterService service)
 {
     Service = service;
 }
예제 #55
0
        public void Can_delete_direct_message()
        {
            var service = new TwitterService { IncludeEntities = true };
            service.AuthenticateWith(_consumerKey, _consumerSecret, _accessToken, _accessTokenSecret);
            var created = service.SendDirectMessage(new SendDirectMessageOptions
            {
                ScreenName = _hero,
                Text = "http://tweetsharp.com @dimebrain #thisisatest " + DateTime.Now.Ticks
            });
            AssertResultWas(service, HttpStatusCode.OK);
            Assert.IsNotNull(created);
            Assert.IsFalse(created.Id == 0);

            var deleted = service.DeleteDirectMessage(new DeleteDirectMessageOptions { Id = created.Id});
            Assert.IsNotNull(deleted);
            Assert.AreEqual(deleted.Id, created.Id);
        }
예제 #56
0
 private static void AssertResultWas(TwitterService service, HttpStatusCode statusCode)
 {
     Assert.IsNotNull(service.Response);
     Assert.AreEqual(statusCode, service.Response.StatusCode);
 }
예제 #57
0
 private static void AssertResultWas(TwitterService service, HttpStatusCode statusCode)
 {
     Assert.IsNotNull(service.Response);
     Assert.AreEqual(statusCode, service.Response.StatusCode);
 }
예제 #58
0
파일: TwitterApi.cs 프로젝트: msanj1/BOTFv2
 public TwitterApi(string ConsumerKey, string ConsumerSecret, string callback)
 {
     twitter     = new TwitterService(ConsumerKey, ConsumerSecret);
     callbackURL = callback;
 }
예제 #59
0
 private TwitterService GetAuthenticatedService()
 {
     var service = new TwitterService(_consumerKey, _consumerSecret);
     service.TraceEnabled = true;
     service.AuthenticateWith(_accessToken, _accessTokenSecret);
     return service;
 }
예제 #60
0
 internal TwitterGeoEndpoint(TwitterService service)
 {
     Service = service;
 }