From fea3be69f5e25ba53f9ebfb71cae101f0f2f85b1 Mon Sep 17 00:00:00 2001 From: high Date: Mon, 5 Sep 2011 00:02:01 -0400 Subject: [PATCH] Fixed serializing wrong object. Error is now serialized too. --- TShockAPI/Rest.cs | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/TShockAPI/Rest.cs b/TShockAPI/Rest.cs index 7fe5a930..03a58a21 100644 --- a/TShockAPI/Rest.cs +++ b/TShockAPI/Rest.cs @@ -48,24 +48,27 @@ namespace TShockAPI } void OnRequest(object sender, RequestEventArgs e) + { + var obj = Process(sender, e); + if (obj == null) + throw new NullReferenceException("obj"); + var str = JsonConvert.SerializeObject(obj, Formatting.Indented); + e.Response.Connection.Type = ConnectionType.Close; + e.Response.Body.Write(Encoding.ASCII.GetBytes(str), 0, str.Length); + e.Response.Status = HttpStatusCode.OK; + return; + } + + protected virtual object Process(object sender, RequestEventArgs e) { var coms = commands.Where(r => r.Path.ToLower().Equals(e.Request.Uri.AbsolutePath.ToLower())); foreach (var com in coms) { var obj = com.Callback(e.Request.Parameters, e); if (obj != null) - { - var str = JsonConvert.SerializeObject(this, Formatting.Indented); - e.Response.Connection.Type = ConnectionType.Close; - e.Response.Body.Write(Encoding.ASCII.GetBytes(str), 0, str.Length); - e.Response.Status = HttpStatusCode.OK; - return; - } + return obj; } - string error = "Error: Invalid request"; - e.Response.Connection.Type = ConnectionType.Close; - e.Response.Body.Write(Encoding.ASCII.GetBytes(error), 0, error.Length); - e.Response.Status = HttpStatusCode.InternalServerError; + return new Dictionary { { "Error", "Invalid request" } }; } #region Dispose