using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Crestron.SimplSharp.WebScripting;
using PepperDash.Core;
namespace PepperDash.Essentials.Core.Web
{
///
/// EssentialsWebApiHelpers class
///
public static class EssentialsWebApiHelpers
{
///
/// GetRequestBody method
///
public static string GetRequestBody(this HttpCwsRequest request)
{
var bytes = new byte[request.ContentLength];
request.InputStream.Read(bytes, 0, request.ContentLength);
return Encoding.UTF8.GetString(bytes, 0, bytes.Length);
}
///
/// MapToAssemblyObject method
///
public static object MapToAssemblyObject(LoadedAssembly assembly)
{
return new
{
assembly.Name,
assembly.Version
};
}
///
/// MapToDeviceListObject method
///
public static object MapToDeviceListObject(IKeyed device)
{
var interfaces = device.GetType()
.GetInterfaces()
.Select(i => i.Name)
.ToList();
return new
{
device.Key,
Name = (device is IKeyName)
? (device as IKeyName).Name
: "---",
Interfaces = interfaces
};
}
///
/// MapJoinToObject method
///
public static object MapJoinToObject(string key, JoinMapBaseAdvanced join)
{
var kp = new KeyValuePair(key, join);
return MapJoinToObject(kp);
}
///
/// MapJoinToObject method
///
public static object MapJoinToObject(KeyValuePair join)
{
return new
{
DeviceKey = join.Key,
Joins = join.Value.Joins.Select(j => MapJoinDataCompleteToObject(j))
};
}
///
/// MapJoinDataCompleteToObject method
///
public static object MapJoinDataCompleteToObject(KeyValuePair joinData)
{
return new
{
Signal = joinData.Key,
Description = joinData.Value.Metadata.Description,
JoinNumber = joinData.Value.JoinNumber,
JoinSpan = joinData.Value.JoinSpan,
JoinType = joinData.Value.Metadata.JoinType.ToString(),
JoinCapabilities = joinData.Value.Metadata.JoinCapabilities.ToString()
};
}
///
/// MapDeviceTypeToObject method
///
public static object MapDeviceTypeToObject(string key, DeviceFactoryWrapper device)
{
var kp = new KeyValuePair(key, device);
return MapDeviceTypeToObject(kp);
}
///
/// MapDeviceTypeToObject method
///
public static object MapDeviceTypeToObject(KeyValuePair device)
{
return new
{
Type = device.Key,
Description = device.Value.Description,
CType = device.Value.Type == null ? "---": device.Value.Type.ToString()
};
}
}
}