Redirects /token/create to /v2/token/create.

Adds /v4/players/read. V4 contains piggy, safe, and forge data, and condenses all item fields into one object with child objects.
This commit is contained in:
White 2017-05-02 16:53:59 +09:30
parent ee5e3f7d9d
commit 72a547441b

View file

@ -28,6 +28,7 @@ using HttpServer;
using Rests;
using Terraria;
using TShockAPI.DB;
using Newtonsoft.Json;
namespace TShockAPI
{
@ -196,6 +197,7 @@ namespace TShockAPI
}
Rest.RegisterRedirect("/status", "/v2/server/status");
Rest.RegisterRedirect("/token/create", "/v2/token/create");
//server commands
Rest.RegisterRedirect("/server/motd", "/v3/server/motd");
@ -227,7 +229,7 @@ namespace TShockAPI
//player commands
Rest.RegisterRedirect("/lists/players", "/lists/players", "/v2/players/list");
Rest.RegisterRedirect("/players/list", "/v2/players/list");
Rest.RegisterRedirect("/players/read", "/v3/players/read");
Rest.RegisterRedirect("/players/read", "/v3/players/read", "v4/players/read");
Rest.RegisterRedirect("/players/kick", "/v2/players/kick");
Rest.RegisterRedirect("/players/ban", "/v2/players/ban");
Rest.RegisterRedirect("/players/kill", "/v2/players/kill");
@ -277,6 +279,7 @@ namespace TShockAPI
Rest.Register(new SecureRestCommand("/lists/players", PlayerList));
Rest.Register(new SecureRestCommand("/v2/players/list", PlayerListV2));
Rest.Register(new SecureRestCommand("/v3/players/read", PlayerReadV3, RestPermissions.restuserinfo));
Rest.Register(new SecureRestCommand("/v4/players/read", PlayerReadV4, RestPermissions.restuserinfo));
Rest.Register(new SecureRestCommand("/v2/players/kick", PlayerKickV2, RestPermissions.restkick));
Rest.Register(new SecureRestCommand("/v2/players/ban", PlayerBanV2, RestPermissions.restban, RestPermissions.restmanagebans));
Rest.Register(new SecureRestCommand("/v2/players/kill", PlayerKill, RestPermissions.restkill));
@ -947,6 +950,45 @@ namespace TShockAPI
};
}
[Description("Get information for a user.")]
[Route("/v4/players/read")]
[Permission(RestPermissions.restuserinfo)]
[Noun("player", true, "The player to lookup", typeof(String))]
[Token]
private object PlayerReadV4(RestRequestArgs args)
{
var ret = PlayerFind(args.Parameters);
if (ret is RestObject)
{
return ret;
}
TSPlayer player = (TSPlayer)ret;
object items = new
{
inventory = player.TPlayer.inventory.Where(i => i.active).Select(item => (NetItem)item),
equipment = player.TPlayer.armor.Where(i => i.active).Select(item => (NetItem)item),
dyes = player.TPlayer.dye.Where(i => i.active).Select(item => (NetItem)item),
piggy = player.TPlayer.bank.item.Where(i => i.active).Select(item => (NetItem)item),
safe = player.TPlayer.bank2.item.Where(i => i.active).Select(item => (NetItem)item),
forge = player.TPlayer.bank3.item.Where(i => i.active).Select(item => (NetItem)item)
};
return new RestObject
{
{"nickname", player.Name},
{"username", player.User?.Name},
{"ip", player.IP},
{"group", player.Group.Name},
{"registered", player.User?.Registered},
{"muted", player.mute },
{"position", player.TileX + "," + player.TileY},
{"items", items},
{"buffs", string.Join(", ", player.TPlayer.buffType)}
};
}
[Description("Kick a player off the server.")]
[Route("/v2/players/kick")]
[Permission(RestPermissions.restkick)]