diff --git a/src/PepperDash.Essentials.Core/Web/EssentialsWebApi.cs b/src/PepperDash.Essentials.Core/Web/EssentialsWebApi.cs
index 0ce6b209..a37a78c0 100644
--- a/src/PepperDash.Essentials.Core/Web/EssentialsWebApi.cs
+++ b/src/PepperDash.Essentials.Core/Web/EssentialsWebApi.cs
@@ -89,7 +89,7 @@ namespace PepperDash.Essentials.Core.Web
Name = "DevList",
RouteHandler = new DevListRequestHandler()
},
- new HttpCwsRoute("deviceCommands")
+ new HttpCwsRoute("deviceCommands/{deviceKey}")
{
Name = "DevJson",
RouteHandler = new DevJsonRequestHandler()
diff --git a/src/PepperDash.Essentials.Core/Web/EssentialsWebApiHelpers.cs b/src/PepperDash.Essentials.Core/Web/EssentialsWebApiHelpers.cs
index 89718fcf..cc6d4cd6 100644
--- a/src/PepperDash.Essentials.Core/Web/EssentialsWebApiHelpers.cs
+++ b/src/PepperDash.Essentials.Core/Web/EssentialsWebApiHelpers.cs
@@ -7,11 +7,11 @@ using PepperDash.Core;
namespace PepperDash.Essentials.Core.Web
{
- public class EssentialsWebApiHelpers
+ public static class EssentialsWebApiHelpers
{
- public static string GetRequestBody(HttpCwsRequest request)
+ public static string GetRequestBody(this HttpCwsRequest request)
{
- var bytes = new Byte[request.ContentLength];
+ var bytes = new byte[request.ContentLength];
request.InputStream.Read(bytes, 0, request.ContentLength);
@@ -22,8 +22,8 @@ namespace PepperDash.Essentials.Core.Web
{
return new
{
- Name = assembly.Name,
- Version = assembly.Version
+ assembly.Name,
+ assembly.Version
};
}
@@ -31,7 +31,7 @@ namespace PepperDash.Essentials.Core.Web
{
return new
{
- Key = device.Key,
+ device.Key,
Name = (device is IKeyName)
? (device as IKeyName).Name
: "---"
diff --git a/src/PepperDash.Essentials.Core/Web/RequestHandlers/AppDebugRequestHandler.cs b/src/PepperDash.Essentials.Core/Web/RequestHandlers/AppDebugRequestHandler.cs
index 1157c5e1..0b7497d2 100644
--- a/src/PepperDash.Essentials.Core/Web/RequestHandlers/AppDebugRequestHandler.cs
+++ b/src/PepperDash.Essentials.Core/Web/RequestHandlers/AppDebugRequestHandler.cs
@@ -52,7 +52,7 @@ namespace PepperDash.Essentials.Core.Web.RequestHandlers
return;
}
- var data = EssentialsWebApiHelpers.GetRequestBody(context.Request);
+ var data = context.Request.GetRequestBody();
if (string.IsNullOrEmpty(data))
{
context.Response.StatusCode = 400;
diff --git a/src/PepperDash.Essentials.Core/Web/RequestHandlers/DevJsonRequestHandler.cs b/src/PepperDash.Essentials.Core/Web/RequestHandlers/DevJsonRequestHandler.cs
index 3599eb23..d14ffb83 100644
--- a/src/PepperDash.Essentials.Core/Web/RequestHandlers/DevJsonRequestHandler.cs
+++ b/src/PepperDash.Essentials.Core/Web/RequestHandlers/DevJsonRequestHandler.cs
@@ -26,6 +26,26 @@ namespace PepperDash.Essentials.Core.Web.RequestHandlers
///
protected override void HandlePost(HttpCwsContext context)
{
+ var routeData = context.Request.RouteData;
+
+ if(routeData == null)
+ {
+ context.Response.StatusCode = 400;
+ context.Response.StatusDescription = "Bad Request";
+ context.Response.End();
+
+ return;
+ }
+
+ if(!routeData.Values.TryGetValue("deviceKey", out var deviceKey))
+ {
+ context.Response.StatusCode = 400;
+ context.Response.StatusDescription = "Bad Request";
+ context.Response.End();
+
+ return;
+ }
+
if (context.Request.ContentLength < 0)
{
context.Response.StatusCode = 400;
@@ -35,7 +55,8 @@ namespace PepperDash.Essentials.Core.Web.RequestHandlers
return;
}
- var data = EssentialsWebApiHelpers.GetRequestBody(context.Request);
+ var data = context.Request.GetRequestBody();
+
if (string.IsNullOrEmpty(data))
{
context.Response.StatusCode = 400;
@@ -46,9 +67,14 @@ namespace PepperDash.Essentials.Core.Web.RequestHandlers
}
try
- {
- var daw = JsonConvert.DeserializeObject(data);
- DeviceJsonApi.DoDeviceActionWithJson(data);
+ {
+ var daw = new DeviceActionWrapper { DeviceKey = (string) deviceKey};
+
+ JsonConvert.PopulateObject(data, daw);
+
+ Debug.LogMessage(LogEventLevel.Verbose, "Device Action Wrapper: {@wrapper}", null, daw);
+
+ DeviceJsonApi.DoDeviceAction(daw);
context.Response.StatusCode = 200;
context.Response.StatusDescription = "OK";
diff --git a/src/PepperDash.Essentials.Core/Web/RequestHandlers/DevListRequestHandler.cs b/src/PepperDash.Essentials.Core/Web/RequestHandlers/DevListRequestHandler.cs
index e9df4347..a83685fb 100644
--- a/src/PepperDash.Essentials.Core/Web/RequestHandlers/DevListRequestHandler.cs
+++ b/src/PepperDash.Essentials.Core/Web/RequestHandlers/DevListRequestHandler.cs
@@ -34,7 +34,7 @@ namespace PepperDash.Essentials.Core.Web.RequestHandlers
return;
}
- allDevices.Sort((a, b) => System.String.Compare(a.Key, b.Key, System.StringComparison.Ordinal));
+ allDevices.Sort((a, b) => string.Compare(a.Key, b.Key, System.StringComparison.Ordinal));
var deviceList = allDevices.Select(d => EssentialsWebApiHelpers.MapToDeviceListObject(d)).ToList();
diff --git a/src/PepperDash.Essentials.Core/Web/RequestHandlers/DoNotLoadConfigOnNextBootRequestHandler.cs b/src/PepperDash.Essentials.Core/Web/RequestHandlers/DoNotLoadConfigOnNextBootRequestHandler.cs
index 4ec3bc97..fdcad73c 100644
--- a/src/PepperDash.Essentials.Core/Web/RequestHandlers/DoNotLoadConfigOnNextBootRequestHandler.cs
+++ b/src/PepperDash.Essentials.Core/Web/RequestHandlers/DoNotLoadConfigOnNextBootRequestHandler.cs
@@ -52,7 +52,7 @@ namespace PepperDash.Essentials.Core.Web.RequestHandlers
return;
}
- var data = EssentialsWebApiHelpers.GetRequestBody(context.Request);
+ var data = context.Request.GetRequestBody();
if (string.IsNullOrEmpty(data))
{
context.Response.StatusCode = 400;
diff --git a/src/PepperDash.Essentials.Core/Web/RequestHandlers/SetDeviceStreamDebugRequestHandler.cs b/src/PepperDash.Essentials.Core/Web/RequestHandlers/SetDeviceStreamDebugRequestHandler.cs
index a08fda2b..6378f1b2 100644
--- a/src/PepperDash.Essentials.Core/Web/RequestHandlers/SetDeviceStreamDebugRequestHandler.cs
+++ b/src/PepperDash.Essentials.Core/Web/RequestHandlers/SetDeviceStreamDebugRequestHandler.cs
@@ -89,7 +89,7 @@ namespace PepperDash.Essentials.Core.Web.RequestHandlers
return;
}
- var data = EssentialsWebApiHelpers.GetRequestBody(context.Request);
+ var data = context.Request.GetRequestBody();
if (data == null)
{
context.Response.StatusCode = 500;