mirror of
https://github.com/PepperDash/Essentials.git
synced 2026-02-15 20:54:55 +00:00
fix: add routes to get routing ports & all defined routes
This commit is contained in:
@@ -144,17 +144,17 @@ namespace PepperDash.Essentials.Core.Web
|
|||||||
Name = "GetJoinMapsForDeviceKey",
|
Name = "GetJoinMapsForDeviceKey",
|
||||||
RouteHandler = new GetJoinMapForDeviceKeyRequestHandler()
|
RouteHandler = new GetJoinMapForDeviceKeyRequestHandler()
|
||||||
},
|
},
|
||||||
new HttpCwsRoute("debugSession")
|
new HttpCwsRoute("debugSession")
|
||||||
{
|
{
|
||||||
Name = "DebugSession",
|
Name = "DebugSession",
|
||||||
RouteHandler = new DebugSessionRequestHandler()
|
RouteHandler = new DebugSessionRequestHandler()
|
||||||
},
|
},
|
||||||
new HttpCwsRoute("doNotLoadConfigOnNextBoot")
|
new HttpCwsRoute("doNotLoadConfigOnNextBoot")
|
||||||
{
|
{
|
||||||
Name = "DoNotLoadConfigOnNextBoot",
|
Name = "DoNotLoadConfigOnNextBoot",
|
||||||
RouteHandler = new DoNotLoadConfigOnNextBootRequestHandler()
|
RouteHandler = new DoNotLoadConfigOnNextBootRequestHandler()
|
||||||
},
|
},
|
||||||
new HttpCwsRoute("restartProgram")
|
new HttpCwsRoute("restartProgram")
|
||||||
{
|
{
|
||||||
Name = "Restart Program",
|
Name = "Restart Program",
|
||||||
RouteHandler = new RestartProgramRequestHandler()
|
RouteHandler = new RestartProgramRequestHandler()
|
||||||
@@ -164,12 +164,16 @@ namespace PepperDash.Essentials.Core.Web
|
|||||||
Name = "Load Config",
|
Name = "Load Config",
|
||||||
RouteHandler = new LoadConfigRequestHandler()
|
RouteHandler = new LoadConfigRequestHandler()
|
||||||
},
|
},
|
||||||
new HttpCwsRoute("getTielines")
|
new HttpCwsRoute("tielines")
|
||||||
{
|
{
|
||||||
Name = "Get TieLines",
|
Name = "Get TieLines",
|
||||||
RouteHandler = new GetTieLinesRequestHandler()
|
RouteHandler = new GetTieLinesRequestHandler()
|
||||||
}
|
},
|
||||||
|
new HttpCwsRoute("device/{deviceKey}/routingPorts")
|
||||||
|
{
|
||||||
|
Name = "Get Routing Ports for a device",
|
||||||
|
RouteHandler = new GetRoutingPortsHandler()
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
AddRoute(routes);
|
AddRoute(routes);
|
||||||
@@ -196,13 +200,18 @@ namespace PepperDash.Essentials.Core.Web
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initializes the CWS class
|
/// Initializes the CWS class
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public override void Initialize()
|
public override void Initialize()
|
||||||
{
|
{
|
||||||
// If running on an appliance
|
AddRoute(new HttpCwsRoute("apiPaths") {
|
||||||
if (CrestronEnvironment.DevicePlatform == eDevicePlatform.Appliance)
|
Name = "GetPaths",
|
||||||
|
RouteHandler = new GetRoutesHandler(_server.GetRouteCollection())
|
||||||
|
});
|
||||||
|
|
||||||
|
// If running on an appliance
|
||||||
|
if (CrestronEnvironment.DevicePlatform == eDevicePlatform.Appliance)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
WEBSERVER [ON | OFF | TIMEOUT <VALUE IN SECONDS> | MAXSESSIONSPERUSER <Number of sessions>]
|
WEBSERVER [ON | OFF | TIMEOUT <VALUE IN SECONDS> | MAXSESSIONSPERUSER <Number of sessions>]
|
||||||
@@ -247,8 +256,8 @@ namespace PepperDash.Essentials.Core.Web
|
|||||||
CrestronEthernetHelper.ETHERNET_PARAMETER_TO_GET.GET_HOSTNAME, 0);
|
CrestronEthernetHelper.ETHERNET_PARAMETER_TO_GET.GET_HOSTNAME, 0);
|
||||||
|
|
||||||
var path = CrestronEnvironment.DevicePlatform == eDevicePlatform.Server
|
var path = CrestronEnvironment.DevicePlatform == eDevicePlatform.Server
|
||||||
? $"http(s)://{hostname}/VirtualControl/Rooms/{InitialParametersClass.RoomId}/cws{BasePath}"
|
? $"https://{hostname}/VirtualControl/Rooms/{InitialParametersClass.RoomId}/cws{BasePath}"
|
||||||
: $"http(s)://{currentIp}/cws{BasePath}";
|
: $"https://{currentIp}/cws{BasePath}";
|
||||||
|
|
||||||
Debug.LogMessage(LogEventLevel.Information, this, "Server:{path:l}", path);
|
Debug.LogMessage(LogEventLevel.Information, this, "Server:{path:l}", path);
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,25 @@
|
|||||||
|
using Crestron.SimplSharp.WebScripting;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using PepperDash.Core.Web.RequestHandlers;
|
||||||
|
|
||||||
|
namespace PepperDash.Essentials.Core.Web.RequestHandlers
|
||||||
|
{
|
||||||
|
public class GetRoutesHandler:WebApiBaseRequestHandler
|
||||||
|
{
|
||||||
|
private HttpCwsRouteCollection routeCollection;
|
||||||
|
public GetRoutesHandler(HttpCwsRouteCollection routeCollection) {
|
||||||
|
this.routeCollection = routeCollection;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void HandleGet(HttpCwsContext context)
|
||||||
|
{
|
||||||
|
var response = JsonConvert.SerializeObject(routeCollection);
|
||||||
|
|
||||||
|
context.Response.StatusCode = 200;
|
||||||
|
context.Response.ContentType = "application/json";
|
||||||
|
context.Response.Headers.Add("Content-Type", "application/json");
|
||||||
|
context.Response.Write(response, false);
|
||||||
|
context.Response.End();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,70 @@
|
|||||||
|
using Crestron.SimplSharp.WebScripting;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using PepperDash.Core.Web.RequestHandlers;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace PepperDash.Essentials.Core.Web.RequestHandlers
|
||||||
|
{
|
||||||
|
public class GetRoutingPortsHandler : WebApiBaseRequestHandler
|
||||||
|
{
|
||||||
|
public GetRoutingPortsHandler() : base(true) { }
|
||||||
|
|
||||||
|
protected override void HandleGet(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;
|
||||||
|
}
|
||||||
|
|
||||||
|
var device = DeviceManager.GetDeviceForKey(deviceKey.ToString());
|
||||||
|
|
||||||
|
if (device == null)
|
||||||
|
{
|
||||||
|
context.Response.StatusCode = 404;
|
||||||
|
context.Response.StatusDescription = "Device Not Found";
|
||||||
|
context.Response.End();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var inputPorts = (device as IRoutingInputs)?.InputPorts;
|
||||||
|
var outputPorts = (device as IRoutingOutputs)?.OutputPorts;
|
||||||
|
|
||||||
|
var response = JsonConvert.SerializeObject( new ReturnValue
|
||||||
|
{
|
||||||
|
InputPorts = inputPorts?.Select(p => p.Key).ToList(),
|
||||||
|
OutputPorts = outputPorts?.Select(p => p.Key).ToList()
|
||||||
|
});
|
||||||
|
|
||||||
|
context.Response.StatusCode = 200;
|
||||||
|
context.Response.StatusDescription = "OK";
|
||||||
|
context.Response.ContentType = "application/json";
|
||||||
|
context.Response.ContentEncoding = Encoding.UTF8;
|
||||||
|
context.Response.Write(response, false);
|
||||||
|
context.Response.End();
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal class ReturnValue {
|
||||||
|
[JsonProperty("inputPorts", NullValueHandling = NullValueHandling.Ignore)]
|
||||||
|
public List<string> InputPorts { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("outputPorts", NullValueHandling = NullValueHandling.Ignore)]
|
||||||
|
public List<string> OutputPorts { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user