Merge branch 'general-devel-rest' of github.com:TShock/TShock into general-devel

Conflicts:
	TShockAPI/Properties/AssemblyInfo.cs
This commit is contained in:
high 2011-09-25 18:29:31 -04:00
commit 223a77340f

View file

@ -36,6 +36,10 @@ 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 });
Rest.Register(new RestCommand("/players/{player}/kick", PlayerKick) { RequiesToken = true });
Rest.Register(new RestCommand("/players/{player}/ban", PlayerBan) { RequiesToken = true });
//RegisterExamples();
}
@ -276,14 +280,14 @@ namespace TShockAPI
#region RestWorldMethods
object WorldRead(RestVerbs verbs, IParameterCollection parameters)
{
var returnBlock = new Dictionary<string, string>();
var returnBlock = new Dictionary<string, object>();
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;
}
@ -320,6 +324,90 @@ namespace TShockAPI
}
#endregion
#region RestPlayerMethods
object PlayerRead(RestVerbs verbs, IParameterCollection parameters)
{
var returnBlock = new Dictionary<string, object>();
var playerParam = parameters["player"];
var found = Tools.FindPlayer(playerParam.ToString());
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];
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);
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;
}
object PlayerKick(RestVerbs verbs, IParameterCollection parameters)
{
var returnBlock = new Dictionary<string, object>();
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;
}
object PlayerBan(RestVerbs verbs, IParameterCollection parameters)
{
var returnBlock = new Dictionary<string, object>();
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
public void RegisterExamples()