mirror of
https://github.com/PepperDash/Essentials.git
synced 2026-04-12 20:17:03 +00:00
refactor: devlist request handler, added static method for creating list
This commit is contained in:
parent
faaa2a354e
commit
4dc6d5b5ac
2 changed files with 26 additions and 23 deletions
|
|
@ -1,5 +1,6 @@
|
|||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using PepperDash.Core;
|
||||
|
||||
namespace PepperDash.Essentials.Core.Web
|
||||
{
|
||||
|
|
@ -14,23 +15,34 @@ namespace PepperDash.Essentials.Core.Web
|
|||
};
|
||||
}
|
||||
|
||||
public static object MapToDeviceListObject(IKeyed device)
|
||||
{
|
||||
return new
|
||||
{
|
||||
Key = device.Key,
|
||||
Name = (device is IKeyName)
|
||||
? (device as IKeyName).Name
|
||||
: "---"
|
||||
};
|
||||
}
|
||||
|
||||
public static object MapJoinToObject(string key, JoinMapBaseAdvanced join)
|
||||
{
|
||||
var kp = new KeyValuePair<string, JoinMapBaseAdvanced>(key, join);
|
||||
|
||||
return MapJoinToObject(kp);
|
||||
}
|
||||
|
||||
|
||||
public static object MapJoinToObject(KeyValuePair<string, JoinMapBaseAdvanced> join)
|
||||
{
|
||||
return new
|
||||
{
|
||||
DeviceKey = join.Key,
|
||||
Joins = join.Value.Joins.Select(j => MapJoinDatacompleteToObject(j))
|
||||
Joins = join.Value.Joins.Select(j => MapJoinDataCompleteToObject(j))
|
||||
};
|
||||
}
|
||||
|
||||
public static object MapJoinDatacompleteToObject(KeyValuePair<string, JoinDataComplete> joinData)
|
||||
public static object MapJoinDataCompleteToObject(KeyValuePair<string, JoinDataComplete> joinData)
|
||||
{
|
||||
return new
|
||||
{
|
||||
|
|
|
|||
|
|
@ -8,11 +8,6 @@ namespace PepperDash.Essentials.Core.Web.RequestHandlers
|
|||
{
|
||||
public class DevListRequestHandler : WebApiBaseRequestHandler
|
||||
{
|
||||
private const string Key = "DevListRequestHandler";
|
||||
private const uint Trace = 0;
|
||||
private const uint Info = 1;
|
||||
private const uint Verbose = 2;
|
||||
|
||||
/// <summary>
|
||||
/// Handles CONNECT method requests
|
||||
/// </summary>
|
||||
|
|
@ -42,24 +37,20 @@ namespace PepperDash.Essentials.Core.Web.RequestHandlers
|
|||
protected override void HandleGet(HttpCwsContext context)
|
||||
{
|
||||
var allDevices = DeviceManager.AllDevices;
|
||||
if (allDevices == null)
|
||||
{
|
||||
context.Response.StatusCode = 404;
|
||||
context.Response.StatusDescription = "Not Found";
|
||||
context.Response.End();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
allDevices.Sort((a, b) => System.String.Compare(a.Key, b.Key, System.StringComparison.Ordinal));
|
||||
|
||||
var devices = allDevices.Select(device => new
|
||||
{
|
||||
Key = device.Key,
|
||||
Name = device is IKeyName ? (device as IKeyName).Name : "---"
|
||||
var deviceList = allDevices.Select(d => EssentialsWebApiHelpers.MapToDeviceListObject(d)).ToList();
|
||||
|
||||
}).Cast<object>().ToList();
|
||||
|
||||
var js = JsonConvert.SerializeObject(devices, Formatting.Indented, new JsonSerializerSettings
|
||||
{
|
||||
ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
|
||||
NullValueHandling = NullValueHandling.Ignore,
|
||||
MissingMemberHandling = MissingMemberHandling.Ignore,
|
||||
DefaultValueHandling = DefaultValueHandling.Ignore,
|
||||
TypeNameHandling = TypeNameHandling.None
|
||||
});
|
||||
//Debug.Console(Verbose, "[{0}] HandleGet: \x0d\x0a{1}", Key.ToLower(), js);
|
||||
var js = JsonConvert.SerializeObject(deviceList, Formatting.Indented);
|
||||
|
||||
context.Response.StatusCode = 200;
|
||||
context.Response.StatusDescription = "OK";
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue