mirror of
https://github.com/PepperDash/Essentials.git
synced 2026-02-13 19:54:59 +00:00
fix: minor Web API enhancements
* changed path for DevJson to include the device key instead of requiring it in the body * Made the `GetRequestBody` method an extension method for the `HttpCwsRequest` class
This commit is contained in:
@@ -89,7 +89,7 @@ namespace PepperDash.Essentials.Core.Web
|
|||||||
Name = "DevList",
|
Name = "DevList",
|
||||||
RouteHandler = new DevListRequestHandler()
|
RouteHandler = new DevListRequestHandler()
|
||||||
},
|
},
|
||||||
new HttpCwsRoute("deviceCommands")
|
new HttpCwsRoute("deviceCommands/{deviceKey}")
|
||||||
{
|
{
|
||||||
Name = "DevJson",
|
Name = "DevJson",
|
||||||
RouteHandler = new DevJsonRequestHandler()
|
RouteHandler = new DevJsonRequestHandler()
|
||||||
|
|||||||
@@ -7,11 +7,11 @@ using PepperDash.Core;
|
|||||||
|
|
||||||
namespace PepperDash.Essentials.Core.Web
|
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);
|
request.InputStream.Read(bytes, 0, request.ContentLength);
|
||||||
|
|
||||||
@@ -22,8 +22,8 @@ namespace PepperDash.Essentials.Core.Web
|
|||||||
{
|
{
|
||||||
return new
|
return new
|
||||||
{
|
{
|
||||||
Name = assembly.Name,
|
assembly.Name,
|
||||||
Version = assembly.Version
|
assembly.Version
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -31,7 +31,7 @@ namespace PepperDash.Essentials.Core.Web
|
|||||||
{
|
{
|
||||||
return new
|
return new
|
||||||
{
|
{
|
||||||
Key = device.Key,
|
device.Key,
|
||||||
Name = (device is IKeyName)
|
Name = (device is IKeyName)
|
||||||
? (device as IKeyName).Name
|
? (device as IKeyName).Name
|
||||||
: "---"
|
: "---"
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ namespace PepperDash.Essentials.Core.Web.RequestHandlers
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var data = EssentialsWebApiHelpers.GetRequestBody(context.Request);
|
var data = context.Request.GetRequestBody();
|
||||||
if (string.IsNullOrEmpty(data))
|
if (string.IsNullOrEmpty(data))
|
||||||
{
|
{
|
||||||
context.Response.StatusCode = 400;
|
context.Response.StatusCode = 400;
|
||||||
|
|||||||
@@ -26,6 +26,26 @@ namespace PepperDash.Essentials.Core.Web.RequestHandlers
|
|||||||
/// <param name="context"></param>
|
/// <param name="context"></param>
|
||||||
protected override void HandlePost(HttpCwsContext context)
|
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)
|
if (context.Request.ContentLength < 0)
|
||||||
{
|
{
|
||||||
context.Response.StatusCode = 400;
|
context.Response.StatusCode = 400;
|
||||||
@@ -35,7 +55,8 @@ namespace PepperDash.Essentials.Core.Web.RequestHandlers
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var data = EssentialsWebApiHelpers.GetRequestBody(context.Request);
|
var data = context.Request.GetRequestBody();
|
||||||
|
|
||||||
if (string.IsNullOrEmpty(data))
|
if (string.IsNullOrEmpty(data))
|
||||||
{
|
{
|
||||||
context.Response.StatusCode = 400;
|
context.Response.StatusCode = 400;
|
||||||
@@ -46,9 +67,14 @@ namespace PepperDash.Essentials.Core.Web.RequestHandlers
|
|||||||
}
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var daw = JsonConvert.DeserializeObject<DeviceActionWrapper>(data);
|
var daw = new DeviceActionWrapper { DeviceKey = (string) deviceKey};
|
||||||
DeviceJsonApi.DoDeviceActionWithJson(data);
|
|
||||||
|
JsonConvert.PopulateObject(data, daw);
|
||||||
|
|
||||||
|
Debug.LogMessage(LogEventLevel.Verbose, "Device Action Wrapper: {@wrapper}", null, daw);
|
||||||
|
|
||||||
|
DeviceJsonApi.DoDeviceAction(daw);
|
||||||
|
|
||||||
context.Response.StatusCode = 200;
|
context.Response.StatusCode = 200;
|
||||||
context.Response.StatusDescription = "OK";
|
context.Response.StatusDescription = "OK";
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ namespace PepperDash.Essentials.Core.Web.RequestHandlers
|
|||||||
return;
|
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();
|
var deviceList = allDevices.Select(d => EssentialsWebApiHelpers.MapToDeviceListObject(d)).ToList();
|
||||||
|
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ namespace PepperDash.Essentials.Core.Web.RequestHandlers
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var data = EssentialsWebApiHelpers.GetRequestBody(context.Request);
|
var data = context.Request.GetRequestBody();
|
||||||
if (string.IsNullOrEmpty(data))
|
if (string.IsNullOrEmpty(data))
|
||||||
{
|
{
|
||||||
context.Response.StatusCode = 400;
|
context.Response.StatusCode = 400;
|
||||||
|
|||||||
@@ -89,7 +89,7 @@ namespace PepperDash.Essentials.Core.Web.RequestHandlers
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var data = EssentialsWebApiHelpers.GetRequestBody(context.Request);
|
var data = context.Request.GetRequestBody();
|
||||||
if (data == null)
|
if (data == null)
|
||||||
{
|
{
|
||||||
context.Response.StatusCode = 500;
|
context.Response.StatusCode = 500;
|
||||||
|
|||||||
Reference in New Issue
Block a user