using System; using System.Collections.Generic; using Crestron.SimplSharp; using Crestron.SimplSharp.CrestronIO; using Crestron.SimplSharpPro; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using PepperDash.Core; using PepperDash.Essentials.Core; namespace PepperDash.Essentials.Core.Config { /// /// Represents a DeviceConfig /// public class DeviceConfig { /// /// Gets or sets the Key /// [JsonProperty("key")] public string Key { get; set; } /// /// Gets or sets the Uid /// [JsonProperty("uid")] public int Uid { get; set; } /// /// Gets or sets the Name /// [JsonProperty("name")] public string Name { get; set; } /// /// Gets or sets the Group /// [JsonProperty("group")] public string Group { get; set; } /// /// Gets or sets the Type /// [JsonProperty("type")] public string Type { get; set; } /// /// Gets or sets the Properties /// [JsonProperty("properties")] [JsonConverter(typeof(DevicePropertiesConverter))] public JToken Properties { get; set; } public DeviceConfig(DeviceConfig dc) { Key = dc.Key; Uid = dc.Uid; Name = dc.Name; Group = dc.Group; Type = dc.Type; Properties = JToken.Parse(dc.Properties.ToString()); //Properties = JToken.FromObject(dc.Properties); } public DeviceConfig() { } } /// /// Represents a DevicePropertiesConverter /// public class DevicePropertiesConverter : JsonConverter { /// /// CanConvert method /// public override bool CanConvert(Type objectType) { return objectType == typeof(JToken); } public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { return JToken.ReadFrom(reader); } /// public override bool CanWrite { get { return false; } } /// /// WriteJson method /// /// public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { throw new NotImplementedException("SOD OFF HOSER"); } } }