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); } } } }