diff --git a/Pepperdash Core/Pepperdash Core/PepperDash_Core.csproj b/Pepperdash Core/Pepperdash Core/PepperDash_Core.csproj index 510d978..ec6346d 100644 --- a/Pepperdash Core/Pepperdash Core/PepperDash_Core.csproj +++ b/Pepperdash Core/Pepperdash Core/PepperDash_Core.csproj @@ -93,7 +93,7 @@ - + diff --git a/Pepperdash Core/Pepperdash Core/Web/RequestHandlers/DefaultRequestHandler.cs b/Pepperdash Core/Pepperdash Core/Web/RequestHandlers/DefaultRequestHandler.cs new file mode 100644 index 0000000..93cfae0 --- /dev/null +++ b/Pepperdash Core/Pepperdash Core/Web/RequestHandlers/DefaultRequestHandler.cs @@ -0,0 +1,17 @@ +using Crestron.SimplSharp.WebScripting; + +namespace PepperDash.Core.Web.RequestHandlers +{ + /// + /// Web API default request handler + /// + public class DefaultRequestHandler : WebApiBaseRequestHandler + { + /// + /// Constructor + /// + public DefaultRequestHandler() + : base(true) + { } + } +} \ No newline at end of file diff --git a/Pepperdash Core/Pepperdash Core/Web/RequestHandlers/DefaultRequestRequestHandler.cs b/Pepperdash Core/Pepperdash Core/Web/RequestHandlers/DefaultRequestRequestHandler.cs deleted file mode 100644 index e052eb3..0000000 --- a/Pepperdash Core/Pepperdash Core/Web/RequestHandlers/DefaultRequestRequestHandler.cs +++ /dev/null @@ -1,10 +0,0 @@ -using Crestron.SimplSharp.WebScripting; - -namespace PepperDash.Core.Web.RequestHandlers -{ - /// - /// Web API default request handler - /// - public class DefaultRequestRequestHandler : WebApiBaseRequestHandler - {} -} \ No newline at end of file diff --git a/Pepperdash Core/Pepperdash Core/Web/RequestHandlers/WebApiBaseRequestHandler.cs b/Pepperdash Core/Pepperdash Core/Web/RequestHandlers/WebApiBaseRequestHandler.cs index 6d4b41c..a73abd1 100644 --- a/Pepperdash Core/Pepperdash Core/Web/RequestHandlers/WebApiBaseRequestHandler.cs +++ b/Pepperdash Core/Pepperdash Core/Web/RequestHandlers/WebApiBaseRequestHandler.cs @@ -10,12 +10,15 @@ namespace PepperDash.Core.Web.RequestHandlers public abstract class WebApiBaseRequestHandler : IHttpCwsHandler { private readonly Dictionary> _handlers; + protected readonly bool EnableCors; /// /// Constructor /// - protected WebApiBaseRequestHandler() + protected WebApiBaseRequestHandler(bool enableCors) { + EnableCors = enableCors; + _handlers = new Dictionary> { {"CONNECT", HandleConnect}, @@ -30,6 +33,14 @@ namespace PepperDash.Core.Web.RequestHandlers }; } + /// + /// Constructor + /// + protected WebApiBaseRequestHandler() + : this(false) + { + } + /// /// Handles CONNECT method requests /// @@ -37,7 +48,7 @@ namespace PepperDash.Core.Web.RequestHandlers protected virtual void HandleConnect(HttpCwsContext context) { context.Response.StatusCode = 501; - context.Response.StatusDescription = "Not Implemented"; + context.Response.StatusDescription = "Not Implemented"; context.Response.End(); } @@ -48,7 +59,7 @@ namespace PepperDash.Core.Web.RequestHandlers protected virtual void HandleDelete(HttpCwsContext context) { context.Response.StatusCode = 501; - context.Response.StatusDescription = "Not Implemented"; + context.Response.StatusDescription = "Not Implemented"; context.Response.End(); } @@ -142,7 +153,13 @@ namespace PepperDash.Core.Web.RequestHandlers return; } + if (EnableCors) + { + context.Response.Headers.Add("Access-Control-Allow-Origin", "*"); + context.Response.Headers.Add("Access-Control-Allow-Methods", "POST, GET, OPTIONS"); + } + handler(context); - } + } } } \ No newline at end of file diff --git a/Pepperdash Core/Pepperdash Core/Web/WebApiServer.cs b/Pepperdash Core/Pepperdash Core/Web/WebApiServer.cs index 43efb5b..f2f8464 100644 --- a/Pepperdash Core/Pepperdash Core/Web/WebApiServer.cs +++ b/Pepperdash Core/Pepperdash Core/Web/WebApiServer.cs @@ -100,7 +100,7 @@ namespace PepperDash.Core.Web if (_server == null) _server = new HttpCwsServer(BasePath); _server.setProcessName(Key); - _server.HttpRequestHandler = new DefaultRequestRequestHandler(); + _server.HttpRequestHandler = new DefaultRequestHandler(); CrestronEnvironment.ProgramStatusEventHandler += CrestronEnvironment_ProgramStatusEventHandler; CrestronEnvironment.EthernetEventHandler += CrestronEnvironment_EthernetEventHandler;