From e258f542128c54b286684011cf3f65edfe11d848 Mon Sep 17 00:00:00 2001 From: Deathmax Date: Fri, 16 Sep 2011 22:36:36 +0800 Subject: [PATCH] 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()