using Newtonsoft.Json; using Newtonsoft.Json.Bson; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using Tango.Core.Bson; namespace Tango.Insights { public class InsightsFile { private static JsonSerializer _serializer; static InsightsFile() { _serializer = new BsonUtcSerializer(); } public List Frames { get; set; } public List Events { get; set; } public List Statuses { get; set; } public List ApplicationExceptions { get; set; } public InsightsFile() { Frames = new List(); Events = new List(); Statuses = new List(); ApplicationExceptions = new List(); } public Stream ToStream() { return new MemoryStream(ToBytes()); } public byte[] ToBytes() { using (MemoryStream ms = new MemoryStream()) { using (BsonWriter writer = new BsonWriter(ms)) { _serializer.Serialize(writer, this); ms.Position = 0; return ms.ToArray(); } } } public void ToFile(String filePath) { File.WriteAllBytes(filePath, ToBytes()); } public static InsightsFile FromStream(Stream stream) { using (BsonReader reader = new BsonReader(stream)) { return _serializer.Deserialize(reader); } } public static InsightsFile FromBytes(byte[] data) { using (MemoryStream ms = new MemoryStream(data)) { ms.Position = 0; return FromStream(ms); } } public static InsightsFile FromFile(String filePath) { using (FileStream fs = File.OpenRead(filePath)) { return FromStream(fs); } } } }