示例#1
0
        public void Can_get_mentions_and_fail()
        {
            var service  = new TwitterService(_consumerKey, _consumerSecret);
            var mentions = service.ListTweetsMentioningMe();

            Assert.AreEqual(HttpStatusCode.Unauthorized, service.Response.StatusCode);
            Assert.IsTrue(mentions.Count() == 1);

            var error = service.Deserialize <TwitterError>(mentions.First());

            Assert.IsNotNull(error);
            Assert.IsNotNullOrEmpty(error.Request);
            Assert.IsNotNullOrEmpty(error.ErrorMessage);
        }
        bool IsFail(IEnumerable <TwitterStatus> statuses, string sendto, string feedname = "none")
        {
            var    service      = new TwitterService();
            bool   result       = false;
            string errorMessage = "no error";

            if (TwitterWrapper.LastResponse != null && TwitterWrapper.LastResponse.StatusCode == HttpStatusCode.Unauthorized)
            {
                errorMessage = "401 Unauthorized";
                result       = true;
            }
            else
            {
                if (statuses.Count() == 1)
                {
                    TwitterStatus mention = statuses.First();
                    if (mention.Id == 0)
                    {
                        errorMessage = "Unsuccessfull deserialization";
                        result       = true;
                    }

                    var error = service.Deserialize <TwitterError>(statuses.First());
                    if (!string.IsNullOrEmpty(error.ErrorMessage))
                    {
                        errorMessage = error.ErrorMessage;
                        result       = true;
                    }
                }
            }


            if (result)
            {
                BotMethods.SendMessage(SendType.Message, sendto, "Error on feed '{0}': {1}".Fill(feedname, errorMessage));
            }

            return(result);
        }
        public void Can_get_mentions_and_fail_in_xml()
        {
            var service = new TwitterService(_consumerKey, _consumerSecret) { Format = TwitterServiceFormat.Xml };
            var mentions = service.ListTweetsMentioningMe();

            Assert.AreEqual(HttpStatusCode.Unauthorized, service.Response.StatusCode);
            Assert.IsTrue(mentions.Count() == 1);

            var error = service.Deserialize<TwitterError>(mentions.First());
            Assert.IsNotNull(error);
            Assert.IsNotNullOrEmpty(error.Request);
            Assert.IsNotNullOrEmpty(error.ErrorMessage);
        }
示例#4
0
        static void Main(string[] args)
        {
            var AppInfo = new {
                CLIENT_ID     = Environment.GetEnvironmentVariable("CLIENT_ID"),
                CLIENT_SECRET = Environment.GetEnvironmentVariable("CLIENT_SECRET")
            };

            if (File.Exists("AppAuth.json"))
            {
                AppInfo = JsonConvert.DeserializeAnonymousType(File.ReadAllText("AppAuth.json"), AppInfo);
            }

            if (AppInfo.CLIENT_ID == null || AppInfo.CLIENT_SECRET == null)
            {
                string id = AppInfo.CLIENT_ID;
                if (AppInfo.CLIENT_ID == null)
                {
                    Console.Write("AppID: ");
                    id = Console.ReadLine();
                }

                string secret = AppInfo.CLIENT_SECRET;
                if (AppInfo.CLIENT_SECRET == null)
                {
                    Console.Write("Secret: ");
                    secret = Console.ReadLine();
                }

                AppInfo = new
                {
                    CLIENT_ID     = id,
                    CLIENT_SECRET = secret
                };
                File.WriteAllText("AppAuth.json", JsonConvert.SerializeObject(AppInfo));
            }

            service = new TwitterService(AppInfo.CLIENT_ID, AppInfo.CLIENT_SECRET);
            access  = null;
            if (File.Exists("token.json"))
            {
                access = service.Deserialize <OAuthAccessToken>(File.ReadAllText("token.json"));
            }
            if (access == null)
            {
                OAuthRequestToken requestToken = service.GetRequestToken();
                Uri uri = service.GetAuthorizationUri(requestToken);
                Console.WriteLine(uri.ToString());
                var verifier = Console.ReadLine();
                access = service.GetAccessToken(requestToken, verifier);
                var tokenstr = service.Serializer.Serialize(access, typeof(OAuthAccessToken));
                File.WriteAllText("token.json", tokenstr);
            }
            service.AuthenticateWith(access.Token, access.TokenSecret);

            Console.WriteLine($"Authenticated as {access.ScreenName}");

            AllTweets = new TwitterStatus[0];
            if (File.Exists("AllTweets.json"))
            {
                AllTweets =
                    JsonConvert.DeserializeObject <TwitterStatus[]>(File.ReadAllText("AllTweets.json"))
                    .Union(AllTweets)
                    .OrderBy(t => t.Id)
                    .ToArray();
            }
            History = new List <Match>();
            if (File.Exists("history.json"))
            {
                var blob    = File.ReadAllText("history.json");
                var matches = JsonConvert.DeserializeObject <Match[]>(blob);
                History.AddRange(matches);
            }

            GetTweets();
            LoadRoundTimerFromDisk();
            Save();
NextRound:
            Refresh();
            if (CurrentBout.Announcement == -1)
            {
                Announce();
                Save();
            }

            if (Announcement == null)
            {
                Announcement = service.GetTweet(new GetTweetOptions()
                {
                    Id = CurrentBout.Announcement
                });
                if (Announcement == null)
                {
                    Announce();
                    Announcement = service.GetTweet(new GetTweetOptions()
                    {
                        Id = CurrentBout.Announcement
                    });
                }
                Console.WriteLine($"> {Announcement.Text}");
            }
            var age = DateTime.UtcNow.Subtract(Announcement.CreatedDate);
            var TimeBetweenRounds = ThirtySeconds; //new TimeSpan(RoundDuration.Ticks / 10);

            while (age.TotalSeconds < (RoundDuration.TotalSeconds - TimeBetweenRounds.TotalSeconds))
            {
                var diff = RoundDuration.Subtract(age).Subtract(TimeBetweenRounds);
                if (diff.TotalHours > 1)
                {
                    Console.WriteLine($" Sleeping 1 hour of {diff.TotalHours}");
                    Thread.Sleep(OneHour);
                    if (DateTime.Now.Subtract(LastRecount).TotalHours > 2)
                    {
                        GetTweets();
                        Recount();
                        LastRecount = DateTime.Now;
                    }
                }
                else
                {
                    Console.WriteLine($" Sleeping {diff.ToString()}");
                    Thread.Sleep(diff);
                }
                LoadRoundTimerFromDisk(); // In case it's been updated.
                age = DateTime.UtcNow.Subtract(Announcement.CreatedDate);
            }
            CalcWinner();
            Save();


            GetTweets();
            Console.WriteLine($" Sleeping {TimeBetweenRounds.ToString()}");
            Thread.Sleep(TimeBetweenRounds);
            if (DateTime.Now.Subtract(LastRecount).TotalHours > 6)
            {
                Recount();
                LastRecount = DateTime.Now;
            }
            if (RoundDuration.TotalMinutes >= 60 && DateTime.Now.Minute != 0)
            {
                Console.WriteLine($" Sleeping {ThirtySeconds.ToString()}");
                Thread.Sleep(ThirtySeconds);
            }

            goto NextRound;
        }
示例#5
0
        private static void Main(string[] args)
        {
            var appInfo = new
            {
                CLIENT_ID     = Environment.GetEnvironmentVariable("CLIENT_ID"),
                CLIENT_SECRET = Environment.GetEnvironmentVariable("CLIENT_SECRET")
            };

            if (File.Exists("AppAuth.json"))
            {
                appInfo = JsonConvert.DeserializeAnonymousType(File.ReadAllText("AppAuth.json"), appInfo);
            }

            if (appInfo.CLIENT_ID == null || appInfo.CLIENT_SECRET == null)
            {
                string id = appInfo.CLIENT_ID;
                if (appInfo.CLIENT_ID == null)
                {
                    Console.Write("AppID: ");
                    id = Console.ReadLine();
                }

                string secret = appInfo.CLIENT_SECRET;
                if (appInfo.CLIENT_SECRET == null)
                {
                    Console.Write("Secret: ");
                    secret = Console.ReadLine();
                }

                appInfo = new
                {
                    CLIENT_ID     = id,
                    CLIENT_SECRET = secret
                };
                File.WriteAllText("AppAuth.json", JsonConvert.SerializeObject(appInfo));
            }


            service = new TwitterService(appInfo.CLIENT_ID, appInfo.CLIENT_SECRET);
            access  = null;
            if (File.Exists("token.json"))
            {
                access = service.Deserialize <OAuthAccessToken>(File.ReadAllText("token.json"));
            }

            if (access == null)
            {
                OAuthRequestToken requestToken = service.GetRequestToken();
                Uri uri = service.GetAuthorizationUri(requestToken);
                Console.WriteLine(uri.ToString());
                var verifier = Console.ReadLine();
                access = service.GetAccessToken(requestToken, verifier);
                var tokenstr = service.Serializer.Serialize(access, typeof(OAuthAccessToken));
                File.WriteAllText("token.json", tokenstr);
            }

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

            Console.WriteLine($"Authenticated as {access.ScreenName}");

            foreach (string gamelink in RandomGames())
            {
                string source;
                try
                {
                    var link = gamelink.Replace("about://", "");
                    source = GetSourceFromGamePage(link);
                    if (source == null)
                    {
                        continue;
                    }

                    Console.WriteLine();
                    Console.WriteLine(source);
                }
                catch (Exception)
                {
                    Thread.Sleep(1000);
                    continue;
                }

                try
                {
                    switch (Path.GetExtension(source))
                    {
                    case ".txt":
                    case ".ni":

                        ReadSource(source);
                        break;

                    case ".html":
                        //todo: Deal with HTML source files.
                        ReadSource(source.Replace(".html", ".txt"));
                        break;

                    case ".zip":
                    case ".sit":
                        break;

                    default:
                        // Try anyway?
                        ReadSource(source);
                        break;
                    }
                }
                catch (WebException c)
                {
                    // 404 or some such error. Go to the Next story.
                    continue;
                }
            }
        }