From 264e6332021ba62facf841b7072bde01ff6a2be2 Mon Sep 17 00:00:00 2001 From: Lucas Nicodemus Date: Tue, 3 Jan 2012 15:29:36 -0700 Subject: [PATCH] TSHOCKPLUGINS-2 #resolve #comment Added. --- TShockAPI/Rest/Rest.cs | 55 ++++++++++++++++++++++++++---------------- 1 file changed, 34 insertions(+), 21 deletions(-) diff --git a/TShockAPI/Rest/Rest.cs b/TShockAPI/Rest/Rest.cs index ac1d1563..719c501d 100644 --- a/TShockAPI/Rest/Rest.cs +++ b/TShockAPI/Rest/Rest.cs @@ -128,31 +128,44 @@ namespace Rests protected virtual object ProcessRequest(object sender, RequestEventArgs e) { - var uri = e.Request.Uri.AbsolutePath; - uri = uri.TrimEnd('/'); - - foreach (var com in commands) + try { - var verbs = new RestVerbs(); - if (com.HasVerbs) - { - var match = Regex.Match(uri, com.UriVerbMatch); - if (!match.Success) - continue; - if ((match.Groups.Count - 1) != com.UriVerbs.Length) - continue; + var uri = e.Request.Uri.AbsolutePath; + uri = uri.TrimEnd('/'); - for (int i = 0; i < com.UriVerbs.Length; i++) - verbs.Add(com.UriVerbs[i], match.Groups[i + 1].Value); - } - else if (com.UriTemplate.ToLower() != uri.ToLower()) + foreach (var com in commands) { - continue; - } + var verbs = new RestVerbs(); + if (com.HasVerbs) + { + var match = Regex.Match(uri, com.UriVerbMatch); + if (!match.Success) + continue; + if ((match.Groups.Count - 1) != com.UriVerbs.Length) + continue; - var obj = ExecuteCommand(com, verbs, e.Request.Parameters); - if (obj != null) - return obj; + for (int i = 0; i < com.UriVerbs.Length; i++) + verbs.Add(com.UriVerbs[i], match.Groups[i + 1].Value); + } + else if (com.UriTemplate.ToLower() != uri.ToLower()) + { + continue; + } + + var obj = ExecuteCommand(com, verbs, e.Request.Parameters); + if (obj != null) + return obj; + } + } + catch (Exception exception) + { + return new Dictionary + { + {"status", "500"}, + {"error", "Internal server error."}, + {"errormsg", exception.Message}, + {"stacktrace", exception.StackTrace}, + }; } return new Dictionary {