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() }; } } }