Allow rest request handlers access to the request object itself, to allow the plugin more information on who is making the request. Refactored the args for Rest commands to just one delegate, that takes a RestRequestArgs which has verbs, params, request, and tokenData.

This commit is contained in:
Zack 2014-08-23 16:08:18 -04:00
parent 65ecfa1e60
commit 62108ecd63
4 changed files with 147 additions and 133 deletions

View file

@ -84,9 +84,9 @@ namespace Rests
}
}
private object DestroyToken(RestVerbs verbs, IParameterCollection parameters, SecureRest.TokenData tokenData)
private object DestroyToken(RestRequestArgs args)
{
var token = verbs["token"];
var token = args.Verbs["token"];
try
{
Tokens.Remove(token);
@ -100,7 +100,7 @@ namespace Rests
{ Response = "Requested token was successfully destroyed." };
}
private object DestroyAllTokens(RestVerbs verbs, IParameterCollection parameters, SecureRest.TokenData tokenData)
private object DestroyAllTokens(RestRequestArgs args)
{
Tokens.Clear();
@ -108,18 +108,18 @@ namespace Rests
{ Response = "All tokens were successfully destroyed." };
}
private object NewTokenV2(RestVerbs verbs, IParameterCollection parameters)
private object NewTokenV2(RestRequestArgs args)
{
var user = parameters["username"];
var pass = verbs["password"];
var user = args.Parameters["username"];
var pass = args.Verbs["password"];
return this.NewTokenInternal(user, pass);
}
private object NewToken(RestVerbs verbs, IParameterCollection parameters)
private object NewToken(RestRequestArgs args)
{
var user = verbs["username"];
var pass = verbs["password"];
var user = args.Verbs["username"];
var pass = args.Verbs["password"];
RestObject response = this.NewTokenInternal(user, pass);
response["deprecated"] = "This endpoint is depracted and will be removed in the future.";
@ -157,10 +157,10 @@ namespace Rests
return response;
}
protected override object ExecuteCommand(RestCommand cmd, RestVerbs verbs, IParameterCollection parms)
protected override object ExecuteCommand(RestCommand cmd, RestVerbs verbs, IParameterCollection parms, IRequest request)
{
if (!cmd.RequiresToken)
return base.ExecuteCommand(cmd, verbs, parms);
return base.ExecuteCommand(cmd, verbs, parms, request);
var token = parms["token"];
if (token == null)
@ -191,7 +191,7 @@ namespace Rests
}
}
object result = secureCmd.Execute(verbs, parms, tokenData);
object result = secureCmd.Execute(verbs, parms, tokenData, request);
if (cmd.DoLog && TShock.Config.LogRest)
TShock.Utils.SendLogs(string.Format(
"\"{0}\" requested REST endpoint: {1}", tokenData.Username, this.BuildRequestUri(cmd, verbs, parms, false)),