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