Added /users/update/{user} with params:

- password (should be sha512) (this should really be improved, but currently its all we've got)
 - group
Refactored a lot of the return blocks to fit coding style.
This commit is contained in:
Lucas Nicodemus 2011-09-05 03:31:14 -06:00
parent 82be1eee1a
commit a90c4e85a1
2 changed files with 63 additions and 26 deletions

View file

@ -20,14 +20,51 @@ namespace TShockAPI {
Rest.Register(new RestCommand("/status", Status) {RequiesToken = false}); Rest.Register(new RestCommand("/status", Status) {RequiesToken = false});
Rest.Register(new RestCommand("/tokentest", TokenTest) { RequiesToken = true }); Rest.Register(new RestCommand("/tokentest", TokenTest) { RequiesToken = true });
Rest.Register(new RestCommand("/users/{user}/info", UserInfo) {RequiesToken = true}); Rest.Register(new RestCommand("/users/read/{user}/info", UserInfo) {RequiesToken = true});
Rest.Register(new RestCommand("/users/{user}/destroy", UserDestroy) {RequiesToken = true}); Rest.Register(new RestCommand("/users/destroy/{user}", UserDestroy) {RequiesToken = true});
Rest.Register(new RestCommand("/users/update/{user}", UserUpdate) {RequiesToken = true});
//RegisterExamples(); //RegisterExamples();
} }
#region RestMethods #region RestMethods
object UserUpdate(RestVerbs verbs, IParameterCollection parameters)
{
var returnBlock = new Dictionary<string, string>();
var password = parameters["password"];
var group = parameters["group"];
if (group == null && password == null)
{
returnBlock.Add("status", "400");
returnBlock.Add("error", "No parameters were passed.");
return returnBlock;
}
var user = TShock.Users.GetUserByName(verbs["user"]);
if (user == null)
{
returnBlock.Add("status", "400");
returnBlock.Add("error", "The specefied user doesn't exist.");
return returnBlock;
}
if (password != null)
{
TShock.Users.SetUserPassword(user, password);
returnBlock.Add("password-response", "Password updated successfully.");
}
if (group != null)
{
TShock.Users.SetUserGroup(user, group);
returnBlock.Add("group-response", "Group updated successfully.");
}
returnBlock.Add("status", "200");
return returnBlock;
}
object UserDestroy(RestVerbs verbs, IParameterCollection parameters) object UserDestroy(RestVerbs verbs, IParameterCollection parameters)
{ {
var user = TShock.Users.GetUserByName(verbs["user"]); var user = TShock.Users.GetUserByName(verbs["user"]);
@ -35,19 +72,19 @@ namespace TShockAPI {
{ {
return new Dictionary<string, string> { { "status", "400" }, { "error", "The specified user account does't exist." } }; return new Dictionary<string, string> { { "status", "400" }, { "error", "The specified user account does't exist." } };
} }
var ReturnBlock = new Dictionary<string, string>(); var returnBlock = new Dictionary<string, string>();
try try
{ {
TShock.Users.RemoveUser(user); TShock.Users.RemoveUser(user);
} catch (Exception) } catch (Exception)
{ {
ReturnBlock.Add("status", "400"); returnBlock.Add("status", "400");
ReturnBlock.Add("error", "The specified user was unable to be removed."); returnBlock.Add("error", "The specified user was unable to be removed.");
return ReturnBlock; return returnBlock;
} }
ReturnBlock.Add("status", "200"); returnBlock.Add("status", "200");
ReturnBlock.Add("response", "User deleted successfully."); returnBlock.Add("response", "User deleted successfully.");
return ReturnBlock; return returnBlock;
} }
object UserInfo(RestVerbs verbs, IParameterCollection parameters) object UserInfo(RestVerbs verbs, IParameterCollection parameters)
@ -59,11 +96,11 @@ namespace TShockAPI {
{{"status", "400"}, {"error", "The specified user account does't exist."}}; {{"status", "400"}, {"error", "The specified user account does't exist."}};
} }
var ReturnBlock = new Dictionary<string, string>(); var returnBlock = new Dictionary<string, string>();
ReturnBlock.Add("status", "200"); returnBlock.Add("status", "200");
ReturnBlock.Add("group", user.Group); returnBlock.Add("group", user.Group);
ReturnBlock.Add("id", user.ID.ToString()); returnBlock.Add("id", user.ID.ToString());
return ReturnBlock; return returnBlock;
} }
object TokenTest(RestVerbs verbs, IParameterCollection parameters) object TokenTest(RestVerbs verbs, IParameterCollection parameters)
@ -74,12 +111,12 @@ namespace TShockAPI {
object Status(RestVerbs verbs, IParameterCollection parameters) object Status(RestVerbs verbs, IParameterCollection parameters)
{ {
var ReturnBlock = new Dictionary<string, string>(); var returnBlock = new Dictionary<string, string>();
if (TShock.Config.EnableTokenEndpointAuthentication) if (TShock.Config.EnableTokenEndpointAuthentication)
{ {
ReturnBlock.Add("status", "403"); returnBlock.Add("status", "403");
ReturnBlock.Add("error", "Server settings require a token for this API call."); returnBlock.Add("error", "Server settings require a token for this API call.");
return ReturnBlock; return returnBlock;
} }
string CurrentPlayers = ""; string CurrentPlayers = "";
int PlayerCount = 0; int PlayerCount = 0;
@ -91,13 +128,13 @@ namespace TShockAPI {
PlayerCount++; PlayerCount++;
} }
} }
ReturnBlock.Add("status", "200"); returnBlock.Add("status", "200");
ReturnBlock.Add("name", TShock.Config.ServerNickname); returnBlock.Add("name", TShock.Config.ServerNickname);
ReturnBlock.Add("port", Convert.ToString(TShock.Config.ServerPort)); returnBlock.Add("port", Convert.ToString(TShock.Config.ServerPort));
ReturnBlock.Add("playercount", Convert.ToString(PlayerCount)); returnBlock.Add("playercount", Convert.ToString(PlayerCount));
ReturnBlock.Add("players", CurrentPlayers); returnBlock.Add("players", CurrentPlayers);
return ReturnBlock; return returnBlock;
} }
#endregion #endregion

View file

@ -16,7 +16,7 @@ namespace TShockAPI
: base(ip, port) : base(ip, port)
{ {
Tokens = new Dictionary<string, object>(); Tokens = new Dictionary<string, object>();
Register(new RestCommand("/token/new/{username}/{password}", newtoken) { RequiesToken = false }); Register(new RestCommand("/token/create/{username}/{password}", newtoken) { RequiesToken = false });
Register(new RestCommand("/token/destroy/{token}", DestroyToken) {RequiesToken = true}); Register(new RestCommand("/token/destroy/{token}", DestroyToken) {RequiesToken = true});
} }