public IActionResult InvasionRewardNotifications(string message) { string output = new EasyCryptAES().Decrypt(appSecrets.TaskTriggerPassphrase, message); if (string.IsNullOrWhiteSpace(message)) { return(BadRequest("Missing parameter")); } else { if (DateTime.TryParse(output, out DateTime result)) { TimeSpan difference = DateTime.Now.Subtract(result); if (Math.Abs(difference.TotalSeconds) < 30) { invasionRewardNotifier.StartTask(); return(Ok()); } else { return(BadRequest("Invalid: " + difference.TotalSeconds)); } } else { return(UnprocessableEntity("Failed to parse message")); } } }
static void Main(string[] args) { ILogger log = ConfigLogger(); string urlArg = args.SingleOrDefault(x => x.StartsWith("-url=")); //urlArg = "-url=http://tillers.dynu.com/WarframeTracker/Task/Test"; string passphraseArg = args.SingleOrDefault(x => x.StartsWith("-passphrase=")); //passphraseArg = "-passphrase=towerframe"; string url = urlArg.Split(new[] { '=' }, 2, StringSplitOptions.RemoveEmptyEntries).Last(); string passphrase = passphraseArg.Split(new[] { '=' }, 2, StringSplitOptions.RemoveEmptyEntries).Last(); string message = new EasyCryptAES().Encrypt(passphrase, DateTime.Now.ToString()); Uri uri = new Uri(url); Uri uriWithQuery = uri.AddQuery("message", message); using HttpClientHandler httpClientHandler = new HttpClientHandler(); httpClientHandler.ServerCertificateCustomValidationCallback += (sender, cert, chain, sslPolicyErrors) => true; using HttpClient httpClient = new HttpClient(httpClientHandler); HttpResponseMessage response = httpClient.GetAsync(uriWithQuery).Result; if (response.IsSuccessStatusCode) { log.Information($"{uri} - StatusCode: {(int)response.StatusCode} {response.ReasonPhrase}"); } else { log.Error($"{uri} - StatusCode: {(int)response.StatusCode} {response.ReasonPhrase}"); } }
public IActionResult Test(string message) { bool success = false; string reason = string.Empty; TimeSpan difference = new TimeSpan(0); string output = new EasyCryptAES().Decrypt(appSecrets.TaskTriggerPassphrase, message); if (DateTime.TryParse(output, out DateTime result)) { difference = DateTime.Now.Subtract(result); if (Math.Abs(difference.TotalSeconds) < 30) { success = true; } else { reason = "outside timespan range"; } } else { reason = "failed to parse"; } return(Json(new { success, reason, message = output, difference = difference.TotalSeconds })); }