mirror of
https://github.com/PepperDash/Essentials.git
synced 2026-02-09 17:54:59 +00:00
feat: updates for web debugging
This commit is contained in:
@@ -16,11 +16,6 @@
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Compile Remove="Web\**" />
|
||||
<EmbeddedResource Remove="Web\**" />
|
||||
<None Remove="Web\**" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
@@ -31,7 +26,7 @@
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.2">
|
||||
<Aliases>Full</Aliases>
|
||||
</PackageReference>
|
||||
<PackageReference Include="PepperDashCore" Version="2.0.0-beta-318" />
|
||||
<PackageReference Include="PepperDashCore" Version="2.0.0-alpha-344" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Crestron\CrestronGenericBaseDevice.cs.orig" />
|
||||
|
||||
@@ -75,11 +75,6 @@ namespace PepperDash.Essentials
|
||||
version = Global.AssemblyVersion;
|
||||
break;
|
||||
}
|
||||
case ("PepperDash_Essentials_DM.dll"):
|
||||
{
|
||||
version = Global.AssemblyVersion;
|
||||
break;
|
||||
}
|
||||
case ("Essentials Devices Common.dll"):
|
||||
{
|
||||
version = Global.AssemblyVersion;
|
||||
|
||||
@@ -9,7 +9,7 @@ using PepperDash.Essentials.Core.Web.RequestHandlers;
|
||||
|
||||
namespace PepperDash.Essentials.Core.Web
|
||||
{
|
||||
public class EssemtialsWebApi : EssentialsDevice
|
||||
public class EssentialsWebApi : EssentialsDevice
|
||||
{
|
||||
private readonly WebApiServer _server;
|
||||
|
||||
@@ -43,7 +43,7 @@ namespace PepperDash.Essentials.Core.Web
|
||||
/// </summary>
|
||||
/// <param name="key"></param>
|
||||
/// <param name="name"></param>
|
||||
public EssemtialsWebApi(string key, string name)
|
||||
public EssentialsWebApi(string key, string name)
|
||||
: this(key, name, null)
|
||||
{
|
||||
}
|
||||
@@ -54,7 +54,7 @@ namespace PepperDash.Essentials.Core.Web
|
||||
/// <param name="key"></param>
|
||||
/// <param name="name"></param>
|
||||
/// <param name="config"></param>
|
||||
public EssemtialsWebApi(string key, string name, EssentialsWebApiPropertiesConfig config)
|
||||
public EssentialsWebApi(string key, string name, EssentialsWebApiPropertiesConfig config)
|
||||
: base(key, name)
|
||||
{
|
||||
Key = key;
|
||||
@@ -65,91 +65,95 @@ namespace PepperDash.Essentials.Core.Web
|
||||
BasePath = string.IsNullOrEmpty(config.BasePath) ? _defaultBasePath : config.BasePath;
|
||||
|
||||
_server = new WebApiServer(Key, Name, BasePath);
|
||||
|
||||
SetupRoutes();
|
||||
|
||||
Initialize();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Custom activate, add routes
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public override bool CustomActivate()
|
||||
private void SetupRoutes()
|
||||
{
|
||||
var routes = new List<HttpCwsRoute>
|
||||
{
|
||||
new HttpCwsRoute("reportversions")
|
||||
{
|
||||
Name = "ReportVersions",
|
||||
RouteHandler = new ReportVersionsRequestHandler()
|
||||
},
|
||||
new HttpCwsRoute("appdebug")
|
||||
{
|
||||
Name = "AppDebug",
|
||||
RouteHandler = new AppDebugRequestHandler()
|
||||
},
|
||||
new HttpCwsRoute("devlist")
|
||||
{
|
||||
Name = "DevList",
|
||||
RouteHandler = new DevListRequestHandler()
|
||||
},
|
||||
new HttpCwsRoute("devprops")
|
||||
{
|
||||
Name = "DevProps",
|
||||
RouteHandler = new DevPropsRequestHandler()
|
||||
},
|
||||
new HttpCwsRoute("devjson")
|
||||
{
|
||||
Name = "DevJson",
|
||||
RouteHandler = new DevJsonRequestHandler()
|
||||
},
|
||||
new HttpCwsRoute("setdevicestreamdebug")
|
||||
{
|
||||
Name = "SetDeviceStreamDebug",
|
||||
RouteHandler = new SetDeviceStreamDebugRequestHandler()
|
||||
},
|
||||
new HttpCwsRoute("disableallstreamdebug")
|
||||
{
|
||||
Name = "DisableAllStreamDebug",
|
||||
RouteHandler = new DisableAllStreamDebugRequestHandler()
|
||||
},
|
||||
new HttpCwsRoute("showconfig")
|
||||
{
|
||||
Name = "ShowConfig",
|
||||
RouteHandler = new ShowConfigRequestHandler()
|
||||
},
|
||||
new HttpCwsRoute("gettypes")
|
||||
{
|
||||
Name = "GetTypes",
|
||||
RouteHandler = new GetTypesRequestHandler()
|
||||
},
|
||||
new HttpCwsRoute("gettypes/{filter}")
|
||||
{
|
||||
Name = "GetTypesByFilter",
|
||||
RouteHandler = new GetTypesByFilterRequestHandler()
|
||||
},
|
||||
new HttpCwsRoute("getjoinmap/{bridgeKey}")
|
||||
{
|
||||
Name = "GetJoinMapsForBridgeKey",
|
||||
RouteHandler = new GetJoinMapForBridgeKeyRequestHandler()
|
||||
},
|
||||
new HttpCwsRoute("getjoinmap/{bridgeKey}/{deviceKey}")
|
||||
{
|
||||
Name = "GetJoinMapsForDeviceKey",
|
||||
RouteHandler = new GetJoinMapForDeviceKeyRequestHandler()
|
||||
},
|
||||
new HttpCwsRoute("feedbacks/{deviceKey}")
|
||||
{
|
||||
Name = "GetFeedbacksForDeviceKey",
|
||||
RouteHandler = new GetFeedbacksForDeviceRequestHandler()
|
||||
}
|
||||
};
|
||||
var routes = new List<HttpCwsRoute>
|
||||
{
|
||||
new HttpCwsRoute("versions")
|
||||
{
|
||||
Name = "ReportVersions",
|
||||
RouteHandler = new ReportVersionsRequestHandler()
|
||||
},
|
||||
new HttpCwsRoute("appdebug")
|
||||
{
|
||||
Name = "AppDebug",
|
||||
RouteHandler = new AppDebugRequestHandler()
|
||||
},
|
||||
new HttpCwsRoute("devices")
|
||||
{
|
||||
Name = "DevList",
|
||||
RouteHandler = new DevListRequestHandler()
|
||||
},
|
||||
new HttpCwsRoute("deviceCommands")
|
||||
{
|
||||
Name = "DevJson",
|
||||
RouteHandler = new DevJsonRequestHandler()
|
||||
},
|
||||
new HttpCwsRoute("deviceProperties/{deviceKey}")
|
||||
{
|
||||
Name = "DevProps",
|
||||
RouteHandler = new DevPropsRequestHandler()
|
||||
},
|
||||
new HttpCwsRoute("deviceMethods/{deviceKey}")
|
||||
{
|
||||
Name = "DevMethods",
|
||||
RouteHandler = new DevMethodsRequestHandler()
|
||||
},
|
||||
new HttpCwsRoute("deviceFeedbacks/{deviceKey}")
|
||||
{
|
||||
Name = "GetFeedbacksForDeviceKey",
|
||||
RouteHandler = new GetFeedbacksForDeviceRequestHandler()
|
||||
},
|
||||
new HttpCwsRoute("deviceStreamDebug")
|
||||
{
|
||||
Name = "SetDeviceStreamDebug",
|
||||
RouteHandler = new SetDeviceStreamDebugRequestHandler()
|
||||
},
|
||||
new HttpCwsRoute("disableAllStreamDebug")
|
||||
{
|
||||
Name = "DisableAllStreamDebug",
|
||||
RouteHandler = new DisableAllStreamDebugRequestHandler()
|
||||
},
|
||||
new HttpCwsRoute("config")
|
||||
{
|
||||
Name = "ShowConfig",
|
||||
RouteHandler = new ShowConfigRequestHandler()
|
||||
},
|
||||
new HttpCwsRoute("types")
|
||||
{
|
||||
Name = "GetTypes",
|
||||
RouteHandler = new GetTypesRequestHandler()
|
||||
},
|
||||
new HttpCwsRoute("types/{filter}")
|
||||
{
|
||||
Name = "GetTypesByFilter",
|
||||
RouteHandler = new GetTypesByFilterRequestHandler()
|
||||
},
|
||||
new HttpCwsRoute("joinMap/{bridgeKey}")
|
||||
{
|
||||
Name = "GetJoinMapsForBridgeKey",
|
||||
RouteHandler = new GetJoinMapForBridgeKeyRequestHandler()
|
||||
},
|
||||
new HttpCwsRoute("joinMap/{bridgeKey}/{deviceKey}")
|
||||
{
|
||||
Name = "GetJoinMapsForDeviceKey",
|
||||
RouteHandler = new GetJoinMapForDeviceKeyRequestHandler()
|
||||
},
|
||||
|
||||
foreach (var route in routes.Where(route => route != null))
|
||||
{
|
||||
var r = route;
|
||||
_server.AddRoute(r);
|
||||
}
|
||||
};
|
||||
|
||||
return base.CustomActivate();
|
||||
}
|
||||
foreach (var route in routes.Where(route => route != null))
|
||||
{
|
||||
var r = route;
|
||||
_server.AddRoute(r);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Initializes the CWS class
|
||||
@@ -4,7 +4,7 @@ using PepperDash.Essentials.Core.Config;
|
||||
|
||||
namespace PepperDash.Essentials.Core.Web
|
||||
{
|
||||
public class EssentialsWebApiFactory : EssentialsDeviceFactory<EssemtialsWebApi>
|
||||
public class EssentialsWebApiFactory : EssentialsDeviceFactory<EssentialsWebApi>
|
||||
{
|
||||
public EssentialsWebApiFactory()
|
||||
{
|
||||
@@ -16,7 +16,7 @@ namespace PepperDash.Essentials.Core.Web
|
||||
Debug.Console(1, "Factory Attempting to create new Essentials Web API Server");
|
||||
|
||||
var props = dc.Properties.ToObject<EssentialsWebApiPropertiesConfig>();
|
||||
if (props != null) return new EssemtialsWebApi(dc.Key, dc.Name, props);
|
||||
if (props != null) return new EssentialsWebApi(dc.Key, dc.Name, props);
|
||||
|
||||
Debug.Console(1, "Factory failed to create new Essentials Web API Server");
|
||||
return null;
|
||||
|
||||
@@ -0,0 +1,76 @@
|
||||
using System.Text;
|
||||
using Crestron.SimplSharp.WebScripting;
|
||||
using Newtonsoft.Json;
|
||||
using PepperDash.Core.Web.RequestHandlers;
|
||||
|
||||
namespace PepperDash.Essentials.Core.Web.RequestHandlers
|
||||
{
|
||||
public class DevMethodsRequestHandler : WebApiBaseRequestHandler
|
||||
{
|
||||
/// <summary>
|
||||
/// Constructor
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// base(true) enables CORS support by default
|
||||
/// </remarks>
|
||||
public DevMethodsRequestHandler()
|
||||
: base(true)
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Handles GET method requests
|
||||
/// </summary>
|
||||
/// <param name="context"></param>
|
||||
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;
|
||||
}
|
||||
|
||||
object deviceObj;
|
||||
if (!routeData.Values.TryGetValue("deviceKey", out deviceObj))
|
||||
{
|
||||
context.Response.StatusCode = 400;
|
||||
context.Response.StatusDescription = "Bad Request";
|
||||
context.Response.End();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
var device = DeviceManager.GetDeviceForKey(deviceObj.ToString());
|
||||
|
||||
if (device == null)
|
||||
{
|
||||
context.Response.StatusCode = 404;
|
||||
context.Response.StatusDescription = "Device Not Found";
|
||||
context.Response.End();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
var deviceMethods = DeviceJsonApi.GetMethods(device.Key);
|
||||
if (deviceMethods == null || deviceMethods.ToLower().Contains("no device"))
|
||||
{
|
||||
context.Response.StatusCode = 404;
|
||||
context.Response.StatusDescription = "Not Found";
|
||||
context.Response.End();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
context.Response.StatusCode = 200;
|
||||
context.Response.StatusDescription = "OK";
|
||||
context.Response.ContentType = "application/json";
|
||||
context.Response.ContentEncoding = Encoding.UTF8;
|
||||
context.Response.Write(deviceMethods, false);
|
||||
context.Response.End();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -18,59 +18,59 @@ namespace PepperDash.Essentials.Core.Web.RequestHandlers
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Handles POST method requests
|
||||
/// </summary>
|
||||
/// <param name="context"></param>
|
||||
protected override void HandlePost(HttpCwsContext context)
|
||||
{
|
||||
if (context.Request.ContentLength < 0)
|
||||
{
|
||||
context.Response.StatusCode = 400;
|
||||
context.Response.StatusDescription = "Bad Request";
|
||||
context.Response.End();
|
||||
/// <summary>
|
||||
/// Handles GET method requests
|
||||
/// </summary>
|
||||
/// <param name="context"></param>
|
||||
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;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
var data = EssentialsWebApiHelpers.GetRequestBody(context.Request);
|
||||
if (string.IsNullOrEmpty(data))
|
||||
{
|
||||
context.Response.StatusCode = 400;
|
||||
context.Response.StatusDescription = "Bad Request";
|
||||
context.Response.End();
|
||||
object deviceObj;
|
||||
if (!routeData.Values.TryGetValue("deviceKey", out deviceObj))
|
||||
{
|
||||
context.Response.StatusCode = 400;
|
||||
context.Response.StatusDescription = "Bad Request";
|
||||
context.Response.End();
|
||||
|
||||
return;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
var o = new DeviceActionWrapper();
|
||||
var body = JsonConvert.DeserializeAnonymousType(data, o);
|
||||
|
||||
if (string.IsNullOrEmpty(body.DeviceKey))
|
||||
{
|
||||
context.Response.StatusCode = 400;
|
||||
context.Response.StatusDescription = "Bad Request";
|
||||
context.Response.End();
|
||||
var device = DeviceManager.GetDeviceForKey(deviceObj.ToString());
|
||||
|
||||
return;
|
||||
}
|
||||
if (device == null)
|
||||
{
|
||||
context.Response.StatusCode = 404;
|
||||
context.Response.StatusDescription = "Device Not Found";
|
||||
context.Response.End();
|
||||
|
||||
var deviceProps = DeviceJsonApi.GetProperties(body.DeviceKey);
|
||||
if (deviceProps == null || deviceProps.ToLower().Contains("no device"))
|
||||
{
|
||||
context.Response.StatusCode = 404;
|
||||
context.Response.StatusDescription = "Not Found";
|
||||
context.Response.End();
|
||||
return;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
var deviceProperties = DeviceJsonApi.GetProperties(device.Key);
|
||||
if (deviceProperties == null || deviceProperties.ToLower().Contains("no device"))
|
||||
{
|
||||
context.Response.StatusCode = 404;
|
||||
context.Response.StatusDescription = "Not Found";
|
||||
context.Response.End();
|
||||
|
||||
context.Response.StatusCode = 200;
|
||||
context.Response.StatusDescription = "OK";
|
||||
context.Response.ContentType = "application/json";
|
||||
context.Response.ContentEncoding = Encoding.UTF8;
|
||||
context.Response.Write(deviceProps, false);
|
||||
context.Response.End();
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
context.Response.StatusCode = 200;
|
||||
context.Response.StatusDescription = "OK";
|
||||
context.Response.ContentType = "application/json";
|
||||
context.Response.ContentEncoding = Encoding.UTF8;
|
||||
context.Response.Write(deviceProperties, false);
|
||||
context.Response.End();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
extern alias Full
|
||||
extern alias Full;
|
||||
|
||||
using System.Linq;
|
||||
using Crestron.SimplSharp.WebScripting;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
extern alias Full
|
||||
extern alias Full;
|
||||
|
||||
using System.Linq;
|
||||
using Crestron.SimplSharp.WebScripting;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
extern alias Full
|
||||
extern alias Full;
|
||||
|
||||
using System.Linq;
|
||||
using Crestron.SimplSharp.WebScripting;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
extern alias Full
|
||||
extern alias Full;
|
||||
|
||||
using Crestron.SimplSharp.WebScripting;
|
||||
using Full.Newtonsoft.Json;
|
||||
|
||||
Reference in New Issue
Block a user