Exemplo n.º 1
0
        private async Task <HttpResponseMessage> PostAsync(string url, Dictionary <string, string> formData)
        {
            if (RAtoken.TimeLeftToRenew() > 20)
            {
                if (_bucket.requestIsAllowed(DateTime.Now))
                {
                    var encodedFormData = new FormUrlEncodedContent(formData);
                    _response = await _client.PostAsync(url, encodedFormData);

                    // Print out the Statuscode to ensure that we are succesfully posting
                    Console.WriteLine(_response.StatusCode);

                    return(_response);
                }
                else
                {
                    System.Threading.Thread.Sleep(_bucket.TimeUntilRefresh() * rand.Next(1000, 1100));
                    return(await PostAsync(url, formData));
                }
            }
            else
            {
                Authorization(logInFormData);
                System.Threading.Thread.Sleep(5000);
                return(await PostAsync(url, formData));
            }
        }
        /// <summary>
        /// Starts the reddit bot.
        /// </summary>
        ///
        /// <example>
        /// bot.Startbot();
        /// >>Your keyword wasn't found
        /// >>OK
        /// >>Your post to user x has been submitted!
        /// >>Your keyword wasn't found (...)
        /// >>Out of tokens, sleeping for y seconds.
        /// </example>
        public void StartBot()
        {
            Authenticate();
            var     jObjects    = ParseJsonGetListOfValues(FetchJson());
            Anagram anagramizer = new Anagram();

            while (true)
            {
                foreach (var jObject in jObjects)
                {
                    if (_tokenBucket.RequestIsAllowed())
                    {
                        if (ContainsKeyword("!anagramize", jObject))
                        {
                            PostComment($"Anagram: \n{anagramizer.Anagramize(jObject.value.ToString())}", jObject);
                        }
                    }
                    else
                    {
                        int time = _tokenBucket.TimeUntilRefresh();
                        Console.WriteLine($"Out of tokens, sleeping for {time} seconds.");
                        System.Threading.Thread.Sleep(time * 1000);
                    }
                }
            }
        }