From e17f56fae0446a50b52bc37fd938f806e1cd6c61 Mon Sep 17 00:00:00 2001 From: Lucas Nicodemus Date: Sat, 7 Jan 2012 14:14:53 -0700 Subject: [PATCH] Added new REST endpoints: - /v2/world/save -- Saves the world - /v2/world/autosave/state/{bool} -- Changes the autosave state of the server TSHOCKPLUGINS-12 --- TShockAPI/Rest/RestManager.cs | 100 ++++++++++++++++++++++------------ 1 file changed, 66 insertions(+), 34 deletions(-) diff --git a/TShockAPI/Rest/RestManager.cs b/TShockAPI/Rest/RestManager.cs index 44b08003..3540a037 100644 --- a/TShockAPI/Rest/RestManager.cs +++ b/TShockAPI/Rest/RestManager.cs @@ -40,7 +40,7 @@ namespace TShockAPI Rest.Register(new RestCommand("/tokentest", TokenTest) {RequiresToken = true}); Rest.Register(new RestCommand("/users/activelist", UserList) {RequiresToken = true}); - Rest.Register(new RestCommand("/v2/users/activelist", UserListV2) { RequiresToken = true }); + Rest.Register(new RestCommand("/v2/users/activelist", UserListV2) { RequiresToken = true }); Rest.Register(new RestCommand("/v2/users/read", UserInfoV2) { RequiresToken = true }); Rest.Register(new RestCommand("/v2/users/destroy", UserDestroyV2) { RequiresToken = true }); Rest.Register(new RestCommand("/v2/users/update", UserUpdateV2) { RequiresToken = true }); @@ -54,6 +54,8 @@ namespace TShockAPI Rest.Register(new RestCommand("/world/read", WorldRead) {RequiresToken = true}); Rest.Register(new RestCommand("/world/meteor", WorldMeteor) {RequiresToken = true}); Rest.Register(new RestCommand("/world/bloodmoon/{bool}", WorldBloodmoon) {RequiresToken = true}); + Rest.Register(new RestCommand("/v2/world/save", WorldSave) { RequiresToken = true}); + Rest.Register(new RestCommand("/v2/world/autosave/state/{bool}", ChangeWorldSaveSettings) { RequiresToken = true }); Rest.Register(new RestCommand("/v2/world/butcher", Butcher) {RequiresToken = true}); Rest.Register(new RestCommand("/v2/players/read", PlayerReadV2) { RequiresToken = true }); @@ -144,7 +146,7 @@ namespace TShockAPI private object TokenTest(RestVerbs verbs, IParameterCollection parameters) { return new Dictionary - {{"status", "200"}, {"response", "Token is valid and was passed through correctly."}}; + {{"status", "200"}, {"response", "Token is valid and was passed through correctly."}}; } private object Status(RestVerbs verbs, IParameterCollection parameters) @@ -168,17 +170,17 @@ namespace TShockAPI #region RestUserMethods - private object UserListV2(RestVerbs verbs, IParameterCollection parameters) - { - var ret = new RestObject("200"); - string playerlist = ""; - foreach (var TSPlayer in TShock.Players) - { - playerlist += playerlist == "" ? TSPlayer.UserAccountName : "\t" + TSPlayer.UserAccountName; - } - ret["activeusers"] = playerlist; - return ret; - } + private object UserListV2(RestVerbs verbs, IParameterCollection parameters) + { + var ret = new RestObject("200"); + string playerlist = ""; + foreach (var TSPlayer in TShock.Players) + { + playerlist += playerlist == "" ? TSPlayer.UserAccountName : "\t" + TSPlayer.UserAccountName; + } + ret["activeusers"] = playerlist; + return ret; + } private object UserUpdateV2(RestVerbs verbs, IParameterCollection parameters) { @@ -379,6 +381,36 @@ namespace TShockAPI #region RestWorldMethods + private object ChangeWorldSaveSettings(RestVerbs verbs, IParameterCollection parameters) + { + bool state; + bool.TryParse(verbs["state"], out state); + + if (state == true) + { + TShock.Config.AutoSave = true; + } + else + { + TShock.Config.AutoSave = false; + } + + RestObject rj = new RestObject("200"); + rj["response"] = "Value changed"; + rj["state"] = state; + + return rj; + } + + private object WorldSave(RestVerbs verbs, IParameterCollection parameters) + { + TShock.Utils.SaveWorld(); + + RestObject rj = new RestObject("200"); + rj["response"] = "World saved."; + return rj; + } + private object Butcher(RestVerbs verbs, IParameterCollection parameters) { bool killFriendly; @@ -423,11 +455,11 @@ namespace TShockAPI private object WorldMeteor(RestVerbs verbs, IParameterCollection parameters) { - if (WorldGen.genRand == null) - WorldGen.genRand = new Random(); + if (WorldGen.genRand == null) + WorldGen.genRand = new Random(); WorldGen.dropMeteor(); var returnBlock = new Dictionary {{"status", "200"}, {"response", "Meteor has been spawned."}}; - return returnBlock; + return returnBlock; } private object WorldBloodmoon(RestVerbs verbs, IParameterCollection parameters) @@ -713,24 +745,24 @@ namespace TShockAPI return returnBlock; } - private object UserList(RestVerbs verbs, IParameterCollection parameters) - { - var ret = new RestObject("200"); - string playerlist = ""; - foreach (var TSPlayer in TShock.Players) - { - if (playerlist == "") - { - playerlist += TSPlayer.UserAccountName; - } - else - { - playerlist += ", " + TSPlayer.UserAccountName; - } - } - ret["activeuesrs"] = playerlist; - return ret; - } + private object UserList(RestVerbs verbs, IParameterCollection parameters) + { + var ret = new RestObject("200"); + string playerlist = ""; + foreach (var TSPlayer in TShock.Players) + { + if (playerlist == "") + { + playerlist += TSPlayer.UserAccountName; + } + else + { + playerlist += ", " + TSPlayer.UserAccountName; + } + } + ret["activeuesrs"] = playerlist; + return ret; + } private object BanDestroy(RestVerbs verbs, IParameterCollection parameters) {