diff --git a/Pepperdash Core/Pepperdash Core/Web/RequestHandlers/DefaultRequestRequestHandler.cs b/Pepperdash Core/Pepperdash Core/Web/RequestHandlers/DefaultRequestRequestHandler.cs
index e7545df..9db866e 100644
--- a/Pepperdash Core/Pepperdash Core/Web/RequestHandlers/DefaultRequestRequestHandler.cs
+++ b/Pepperdash Core/Pepperdash Core/Web/RequestHandlers/DefaultRequestRequestHandler.cs
@@ -14,7 +14,7 @@ namespace PepperDash.Core.Web.RequestHandlers
protected override void HandleConnect(HttpCwsContext context)
{
context.Response.StatusCode = 501;
- context.Response.StatusDescription = "Not Implemented";
+ context.Response.StatusDescription = "Not Implemented";
context.Response.End();
}
diff --git a/Pepperdash Core/Pepperdash Core/Web/WebApiServer.cs b/Pepperdash Core/Pepperdash Core/Web/WebApiServer.cs
index a3a30c0..43efb5b 100644
--- a/Pepperdash Core/Pepperdash Core/Web/WebApiServer.cs
+++ b/Pepperdash Core/Pepperdash Core/Web/WebApiServer.cs
@@ -1,6 +1,10 @@
using System;
+using System.Collections.Generic;
+using System.Linq;
using Crestron.SimplSharp;
using Crestron.SimplSharp.WebScripting;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
using PepperDash.Core.Web.RequestHandlers;
namespace PepperDash.Core.Web
@@ -18,8 +22,8 @@ namespace PepperDash.Core.Web
private const uint DebugInfo = 1;
private const uint DebugVerbose = 2;
- private HttpCwsServer _server;
private readonly CCriticalSection _serverLock = new CCriticalSection();
+ private HttpCwsServer _server;
///
/// Web API server key
@@ -41,6 +45,28 @@ namespace PepperDash.Core.Web
///
public bool IsRegistered { get; private set; }
+ ///
+ /// Http request handler
+ ///
+ //public IHttpCwsHandler HttpRequestHandler
+ //{
+ // get { return _server.HttpRequestHandler; }
+ // set
+ // {
+ // if (_server == null) return;
+ // _server.HttpRequestHandler = value;
+ // }
+ //}
+
+ ///
+ /// Received request event handler
+ ///
+ //public event EventHandler ReceivedRequestEvent
+ //{
+ // add { _server.ReceivedRequestEvent += new HttpCwsRequestEventHandler(value); }
+ // remove { _server.ReceivedRequestEvent -= new HttpCwsRequestEventHandler(value); }
+ //}
+
///
/// Constructor for S+. Make sure to set necessary properties using init method
///
@@ -60,12 +86,12 @@ namespace PepperDash.Core.Web
}
///
- ///
+ /// Constructor
///
///
///
///
- public WebApiServer(string key, string name, string basePath)
+ public WebApiServer(string key, string name, string basePath)
{
Key = key;
Name = string.IsNullOrEmpty(name) ? DefaultName : name;
@@ -73,6 +99,9 @@ namespace PepperDash.Core.Web
if (_server == null) _server = new HttpCwsServer(BasePath);
+ _server.setProcessName(Key);
+ _server.HttpRequestHandler = new DefaultRequestRequestHandler();
+
CrestronEnvironment.ProgramStatusEventHandler += CrestronEnvironment_ProgramStatusEventHandler;
CrestronEnvironment.EthernetEventHandler += CrestronEnvironment_EthernetEventHandler;
}
@@ -85,7 +114,7 @@ namespace PepperDash.Core.Web
{
if (programEventType != eProgramStatusEventType.Stopping) return;
- Debug.Console(DebugInfo, this, "Program stopping. Disabling Server");
+ Debug.Console(DebugInfo, this, "Program stopping. stopping server");
Stop();
}
@@ -147,6 +176,14 @@ namespace PepperDash.Core.Web
_server.Routes.Remove(route);
}
+ ///
+ /// Returns a list of the current routes
+ ///
+ public HttpCwsRouteCollection GetRouteCollection()
+ {
+ return _server.Routes;
+ }
+
///
/// Starts CWS instance
///
@@ -168,9 +205,9 @@ namespace PepperDash.Core.Web
return;
}
- Debug.Console(DebugInfo, this, "Starting server");
-
IsRegistered = _server.Register();
+
+ Debug.Console(DebugInfo, this, "Starting server, registration {0}", IsRegistered ? "was successful" : "failed");
}
catch (Exception ex)
{
@@ -201,6 +238,9 @@ namespace PepperDash.Core.Web
}
IsRegistered = _server.Unregister() == false;
+
+ Debug.Console(DebugInfo, this, "Stopping server, unregistration {0}", IsRegistered ? "failed" : "was successful");
+
_server.Dispose();
_server = null;
}
@@ -229,27 +269,8 @@ namespace PepperDash.Core.Web
{
try
{
- Debug.Console(DebugInfo, this, @"RecieveRequestEventHandler
-Method: {0}
-Path: {1}
-PathInfo: {2}
-PhysicalPath: {3}
-ContentType: {4}
-RawUrl: {5}
-Url: {6}
-UserAgent: {7}
-UserHostAddress: {8}
-UserHostName: {9}",
- args.Context.Request.HttpMethod,
- args.Context.Request.Path,
- args.Context.Request.PathInfo,
- args.Context.Request.PhysicalPath,
- args.Context.Request.ContentType,
- args.Context.Request.RawUrl,
- args.Context.Request.Url,
- args.Context.Request.UserAgent,
- args.Context.Request.UserHostAddress,
- args.Context.Request.UserHostName);
+ var j = JsonConvert.SerializeObject(args.Context, Formatting.Indented);
+ Debug.Console(DebugVerbose, this, "RecieveRequestEventHandler Context:\x0d\x0a{0}", j);
}
catch (Exception ex)
{