private string HandleHttp(HttpListenerRequest request, HttpListenerResponse response) { switch (request.Url.AbsolutePath) { case "/": if (File.Exists("html/index.html")) { return(File.ReadAllText("html/index.html")); } response.Redirect($"http://mtglt.redpoint.games/?url={Uri.EscapeUriString(request.UserHostAddress)}"); return(null); case "/totals.json": break; case "/names.json": return(JsonConvert.SerializeObject(new { player1 = Player_1.GetPlayerName(), player2 = Player_2.GetPlayerName(), player3 = Player_3.GetPlayerName(), player4 = Player_4.GetPlayerName(), })); case "/set": if (request.HasEntityBody) { var data = JsonConvert.DeserializeObject <SetRequest>(request.GetRequestPostData()); if (data.player == 0) { return(JsonError("Missing key `player`")); } var grid = GetPlayerGrids().ElementAt(data.player - 1); if (!data.commander.HasValue || data.commander == 0) { Dispatcher.Invoke(() => grid.GetLifeButton().LifeTotal += data.change); break; } } else { return(JsonError("POST json not found.")); } break; case "/l1": return(Player_1.GetLifeButton().LifeTotal.ToString()); case "/n1": return(Player_1.GetPlayerName()); case "/l2": return(Player_2.GetLifeButton().LifeTotal.ToString()); case "/n2": return(Player_2.GetPlayerName()); case "/l3": return(Player_3.GetLifeButton().LifeTotal.ToString()); case "/n3": return(Player_3.GetPlayerName()); case "/l4": return(Player_4.GetLifeButton().LifeTotal.ToString()); case "/n4": return(Player_4.GetPlayerName()); case "/card.jpg": default: if (File.Exists("html" + request.Url.AbsolutePath)) { return(File.ReadAllText("html" + request.Url.AbsolutePath)); } return(JsonError("Wat")); } return(JsonConvert.SerializeObject(new { player1 = Player_1.GetLifeButton().LifeTotal, player2 = Player_2.GetLifeButton().LifeTotal, player3 = Player_3.GetLifeButton().LifeTotal, player4 = Player_4.GetLifeButton().LifeTotal })); }