public IActionResult detonate([FromBody] SecretView timebomb) { APIMessageView results = new APIMessageView(); // Retrieves all bombs where DetonationTime is surpassed TimeBomb[] hotBombs = _context.TimeBombs.Where(x => x.DetonationTime < DateTime.Now && x.Status == 0).Include(x => x.Message).ToArray(); if (hotBombs.Length > 0) { results.Message = $"Found {hotBombs.Length} hot bombs!"; results.Success = true; // Iterates through bombs, detonating each foreach (TimeBomb bomb in hotBombs) { string message = detonate(bomb); results.Message += " | " + message; } } else { results.Message = $"No hot bombs found"; results.Success = false; } return(Json(ParseAPIResponse(results))); }
public IActionResult ShowMessageAPI(string messageId) { APIMessageView secretView = new APIMessageView(); try { System.Console.WriteLine(messageId); int id = Int32.Parse(messageId); System.Console.WriteLine("Returning message with id:" + id); secretView.SecretMessage = _context.Messages.FirstOrDefault(x => x.MessageId == id); if (secretView.SecretMessage == null) { secretView.Success = false; secretView.Message = "Errant input! No message with id: " + id + " exists!"; System.Console.WriteLine("Errant input! No message with id: " + id + " exists!"); return(Json(secretView)); } secretView.RecentAccesses = _context.Accesses.Where(x => x.MessageId == id).Include(x => x.User).OrderByDescending(x => x.CreatedAt).ToList(); secretView.Success = true; secretView.Message = "Success! Returning message with id: " + id; return(Json(secretView)); } catch (Exception e) { System.Console.WriteLine("Uh oh guys, I think I broke it"); System.Console.WriteLine(e); secretView.Success = false; secretView.Message = e.ToString(); } return(Json(secretView)); }
public APIMessageView UpdateTimebombStatus(TimeBomb timebomb, int status) { APIMessageView results = new APIMessageView(); try { // Retrieve bomb with id i TimeBomb defuseBomb = _context.TimeBombs.FirstOrDefault(x => x.TimeBombId == timebomb.TimeBombId); // Examine bomb's status to ensure it is armed if (defuseBomb.Status != status) { string encryptedMessage = EncryptionMethods.encrypt(EncryptionMethods.crocodile(), timebomb.KillMessage, EncryptionMethods.alphabet()); // Hash killmessage and compare it to bomb's message if (encryptedMessage.Equals(defuseBomb.KillMessage)) { System.Console.WriteLine("Success! KillMessages match!"); // If match, set bomb status to -1 defuseBomb.UpdatedAt = DateTime.Now; defuseBomb.Status = status; _context.SaveChanges(); results.TimeBomb = defuseBomb; string stringStatus = getTimebombStatus(status); System.Console.WriteLine($"Success! Timebomb set to: {stringStatus}!"); results.Success = true; results.Message = $"Success! Timebomb set to: {stringStatus}!"; } else { System.Console.WriteLine("Failure! KillMessages do not match!"); results.Success = false; results.Message = "Failure! KillMessages do not match!"; } } else { System.Console.WriteLine($"Error! Timebomb cannot set status to {status}! Status already set to {status}"); results.Success = false; results.Message = $"Error! Timebomb cannot set status to {status}! Status already set to {status}"; } } catch (Exception e) { System.Console.WriteLine("Something's f****d!"); System.Console.WriteLine(e); results.Success = false; results.Message = "An error occured! " + e; } return(results); }
public static Dictionary <string, object> ParseAPIResponse(APIMessageView message) { Dictionary <string, object> jsonMessage = new Dictionary <string, object>(); if (!string.IsNullOrEmpty(message.Message)) { jsonMessage["message"] = message.Message; } jsonMessage["success"] = message.Success; if (message.TimeBomb != null) { message.TimeBomb.MessageCypher = ""; message.TimeBomb.KillMessage = ""; jsonMessage["TimeBomb"] = message.TimeBomb; } return(jsonMessage); }
public IActionResult Defuse([FromBody] SecretView timebomb) { APIMessageView results = new APIMessageView(); string valid = validateTimebombDefuse(timebomb.NewTimeBomb); if (!string.IsNullOrEmpty(valid)) { System.Console.WriteLine($"Errant Input! You must specify {valid}!"); results.Success = false; results.Message = $"Errant Input! You must specify {valid}!"; this.HttpContext.Response.StatusCode = 400; return(Json(results)); } System.Console.WriteLine("Attempting to defuse bomb"); results = UpdateTimebombStatus(timebomb.NewTimeBomb, -1); return(Json(ParseAPIResponse(results))); }