From 32f59e51c7f8d4d6228203973665c41bc885c650 Mon Sep 17 00:00:00 2001 From: Deathmax Date: Fri, 16 Sep 2011 22:13:29 +0800 Subject: [PATCH 1/4] Change /world/read to use object instead of string Removes .ToString's --- TShockAPI/Rest/RestManager.cs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/TShockAPI/Rest/RestManager.cs b/TShockAPI/Rest/RestManager.cs index 2b6a1f48..335ddc31 100644 --- a/TShockAPI/Rest/RestManager.cs +++ b/TShockAPI/Rest/RestManager.cs @@ -276,14 +276,14 @@ namespace TShockAPI #region RestWorldMethods object WorldRead(RestVerbs verbs, IParameterCollection parameters) { - var returnBlock = new Dictionary(); + var returnBlock = new Dictionary(); returnBlock.Add("status", "200"); returnBlock.Add("name", Main.worldName); returnBlock.Add("size", Main.maxTilesX + "*" + Main.maxTilesY); - returnBlock.Add("time", Main.time.ToString()); - returnBlock.Add("daytime", Main.dayTime.ToString()); - returnBlock.Add("bloodmoon", Main.bloodMoon.ToString()); - returnBlock.Add("invasionsize", Main.invasionSize.ToString()); + returnBlock.Add("time", Main.time); + returnBlock.Add("daytime", Main.dayTime); + returnBlock.Add("bloodmoon", Main.bloodMoon); + returnBlock.Add("invasionsize", Main.invasionSize); return returnBlock; } From e258f542128c54b286684011cf3f65edfe11d848 Mon Sep 17 00:00:00 2001 From: Deathmax Date: Fri, 16 Sep 2011 22:36:36 +0800 Subject: [PATCH 2/4] Add /player/read/{player} --- TShockAPI/Rest/RestManager.cs | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/TShockAPI/Rest/RestManager.cs b/TShockAPI/Rest/RestManager.cs index 335ddc31..b6b9f483 100644 --- a/TShockAPI/Rest/RestManager.cs +++ b/TShockAPI/Rest/RestManager.cs @@ -36,6 +36,8 @@ namespace TShockAPI Rest.Register(new RestCommand("/world/read", WorldRead) { RequiesToken = true }); Rest.Register(new RestCommand("/world/meteor", WorldMeteor) { RequiesToken = true }); Rest.Register(new RestCommand("/world/bloodmoon/{bool}", WorldBloodmoon) { RequiesToken = true }); + + Rest.Register(new RestCommand("/players/read/{player}", PlayerRead) { RequiesToken = true }); //RegisterExamples(); } @@ -320,6 +322,38 @@ namespace TShockAPI } #endregion + #region RestPlayerMethods + object PlayerRead(RestVerbs verbs, IParameterCollection parameters) + { + var returnBlock = new Dictionary(); + var playerParam = parameters["player"]; + var found = Tools.FindPlayer(playerParam.ToString()); + if (found.Count == 0) + { + returnBlock.Add("status", "400"); + returnBlock.Add("error", "Player " + playerParam.ToString() + " was not found"); + } + else if (found.Count > 1) + { + returnBlock.Add("status", "400"); + returnBlock.Add("error", "Player " + playerParam.ToString() + " matches " + playerParam.Count().ToString() + " players"); + } + else if (found.Count == 1) + { + var player = found[0]; + returnBlock.Add("status", "200"); + returnBlock.Add("username", player.UserAccountName == null ? "" : player.UserAccountName); + returnBlock.Add("ip", player.IP); + returnBlock.Add("group", player.Group.Name); + returnBlock.Add("position", player.TileX.ToString() + "," + player.TileY.ToString()); + var activeItems = player.TPlayer.inventory.Where(p => p.active).ToList(); + returnBlock.Add("inventory", string.Join(", ", activeItems.Select(p => p.name))); + returnBlock.Add("buffs", string.Join(", ", player.TPlayer.buffType)); + } + return returnBlock; + } + #endregion + #region RestExampleMethods public void RegisterExamples() From 7a2ae6dbf95aa0c8e2dfe06798cd67aa76650f66 Mon Sep 17 00:00:00 2001 From: Deathmax Date: Sat, 17 Sep 2011 11:41:22 +0800 Subject: [PATCH 3/4] Add /players/{player}/kick --- TShockAPI/Properties/AssemblyInfo.cs | 4 ++-- TShockAPI/Rest/RestManager.cs | 31 ++++++++++++++++++++++++++-- 2 files changed, 31 insertions(+), 4 deletions(-) diff --git a/TShockAPI/Properties/AssemblyInfo.cs b/TShockAPI/Properties/AssemblyInfo.cs index e57ee783..50d3f5e3 100644 --- a/TShockAPI/Properties/AssemblyInfo.cs +++ b/TShockAPI/Properties/AssemblyInfo.cs @@ -36,5 +36,5 @@ using System.Runtime.InteropServices; // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("3.3.3.0916")] -[assembly: AssemblyFileVersion("3.3.3.0916")] +[assembly: AssemblyVersion("3.3.3.0917")] +[assembly: AssemblyFileVersion("3.3.3.0917")] diff --git a/TShockAPI/Rest/RestManager.cs b/TShockAPI/Rest/RestManager.cs index b6b9f483..2471b5f5 100644 --- a/TShockAPI/Rest/RestManager.cs +++ b/TShockAPI/Rest/RestManager.cs @@ -38,6 +38,7 @@ namespace TShockAPI Rest.Register(new RestCommand("/world/bloodmoon/{bool}", WorldBloodmoon) { RequiesToken = true }); Rest.Register(new RestCommand("/players/read/{player}", PlayerRead) { RequiesToken = true }); + Rest.Register(new RestCommand("/players/{player}/kick", PlayerKick) { RequiesToken = true }); //RegisterExamples(); } @@ -331,17 +332,18 @@ namespace TShockAPI if (found.Count == 0) { returnBlock.Add("status", "400"); - returnBlock.Add("error", "Player " + playerParam.ToString() + " was not found"); + returnBlock.Add("error", "Name " + playerParam.ToString() + " was not found"); } else if (found.Count > 1) { returnBlock.Add("status", "400"); - returnBlock.Add("error", "Player " + playerParam.ToString() + " matches " + playerParam.Count().ToString() + " players"); + returnBlock.Add("error", "Name " + playerParam.ToString() + " matches " + playerParam.Count().ToString() + " players"); } else if (found.Count == 1) { var player = found[0]; returnBlock.Add("status", "200"); + returnBlock.Add("nickname", player.Name); returnBlock.Add("username", player.UserAccountName == null ? "" : player.UserAccountName); returnBlock.Add("ip", player.IP); returnBlock.Add("group", player.Group.Name); @@ -352,6 +354,31 @@ namespace TShockAPI } return returnBlock; } + object PlayerKick(RestVerbs verbs, IParameterCollection parameters) + { + var returnBlock = new Dictionary(); + var playerParam = parameters["player"]; + var found = Tools.FindPlayer(playerParam.ToString()); + var reason = verbs["reason"]; + if (found.Count == 0) + { + returnBlock.Add("status", "400"); + returnBlock.Add("error", "Name " + playerParam.ToString() + " was not found"); + } + else if (found.Count > 1) + { + returnBlock.Add("status", "400"); + returnBlock.Add("error", "Name " + playerParam.ToString() + " matches " + playerParam.Count().ToString() + " players"); + } + else if (found.Count == 1) + { + var player = found[0]; + Tools.ForceKick(player, reason == null ? "Kicked via web" : reason.ToString()); + returnBlock.Add("status", "200"); + returnBlock.Add("response", "Player " + player.Name + " was kicked"); + } + return returnBlock; + } #endregion #region RestExampleMethods From cf1f28319949fee10540f9c407cc425dec39fb7c Mon Sep 17 00:00:00 2001 From: Deathmax Date: Sat, 17 Sep 2011 11:45:18 +0800 Subject: [PATCH 4/4] Add /players/{player}/ban --- TShockAPI/Rest/RestManager.cs | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/TShockAPI/Rest/RestManager.cs b/TShockAPI/Rest/RestManager.cs index 2471b5f5..6a70516c 100644 --- a/TShockAPI/Rest/RestManager.cs +++ b/TShockAPI/Rest/RestManager.cs @@ -39,6 +39,7 @@ namespace TShockAPI Rest.Register(new RestCommand("/players/read/{player}", PlayerRead) { RequiesToken = true }); Rest.Register(new RestCommand("/players/{player}/kick", PlayerKick) { RequiesToken = true }); + Rest.Register(new RestCommand("/players/{player}/ban", PlayerBan) { RequiesToken = true }); //RegisterExamples(); } @@ -379,6 +380,32 @@ namespace TShockAPI } return returnBlock; } + object PlayerBan(RestVerbs verbs, IParameterCollection parameters) + { + var returnBlock = new Dictionary(); + var playerParam = parameters["player"]; + var found = Tools.FindPlayer(playerParam.ToString()); + var reason = verbs["reason"]; + if (found.Count == 0) + { + returnBlock.Add("status", "400"); + returnBlock.Add("error", "Name " + playerParam.ToString() + " was not found"); + } + else if (found.Count > 1) + { + returnBlock.Add("status", "400"); + returnBlock.Add("error", "Name " + playerParam.ToString() + " matches " + playerParam.Count().ToString() + " players"); + } + else if (found.Count == 1) + { + var player = found[0]; + TShock.Bans.AddBan(player.IP, player.Name, reason == null ? "Banned via web" : reason.ToString()); + Tools.ForceKick(player, reason == null ? "Banned via web" : reason.ToString()); + returnBlock.Add("status", "200"); + returnBlock.Add("response", "Player " + player.Name + " was banned"); + } + return returnBlock; + } #endregion #region RestExampleMethods