You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
using CircleSDK.Model; using Newtonsoft.Json; using System; using System.Collections.Generic; using Path = System.IO.Path;
namespace CDPShared { public class ActivityRow { private MessageInfo _mi; private CircleViewEventRecord _rec; // resolved fields
public string Filename { get; set; } public string Sender { get; set; }
public DateTime EventTime { get { if (_mi != null) { DateTime start = new DateTime(1970, 1, 1, 0, 0, 0); return start.AddMilliseconds(Convert.ToUInt64(_mi.MessageTimeOffset)).ToLocalTime(); }
if (_rec != null) return _rec.Event.ToLocalTime();
return DateTime.MinValue; } } public string Operation { get { CircleViewMessages cvm = CircleViewMessages.Unknown;
if (_mi != null) cvm = (CircleViewMessages)_mi.MessageType.GetValueOrDefault(10000);
if (_rec != null) cvm = (CircleViewMessages)_rec.MsgType;
switch (cvm) { case CircleViewMessages.FileViewed: return "View"; case CircleViewMessages.FileEncrypted: return "Protect"; case CircleViewMessages.InviteGenerated: return "Invite"; case CircleViewMessages.MemberRevoked: return "User revoked"; case CircleViewMessages.DeviceRevoked: return "Device revoked"; case CircleViewMessages.BlockedViewAttempt: return "Blocked view"; default: return "Unknown"; } } }
public Int32 MessageType { get { if (_mi != null) return (Int32) _mi.MessageType; if (_rec != null) return (Int32)_rec.MsgType; return 0; } }
public string Message { get { if (_mi != null) return _mi.Message; if (_rec != null) return _rec.Message;
return "Unknown"; } }
private List<string> _meta = new List<string>();
private Dictionary<string, string> _dic = new Dictionary<string, string>(StringComparer.InvariantCultureIgnoreCase); public ActivityRow(MessageInfo mi) { _mi = mi; _meta = JsonConvert.DeserializeObject<List<string>>(_mi.AdditionalJson); BuildDictionary(); }
void BuildDictionary() { List<TwoStrings> l2s = new List<TwoStrings>(); foreach (string line in _meta) { int iPos = line.IndexOf('|'); if (iPos == -1) iPos = line.IndexOf(':'); string one = line.Substring(0, iPos); string two = line.Substring(iPos + 1); _dic[one] = two; }
if (_dic.ContainsKey("Full path")) { string fileName = Path.GetFileName(_dic["Full path"]); _dic["Filename"] = fileName; } }
public ActivityRow(CircleViewEventRecord rec) { _rec = rec; _meta = JsonConvert.DeserializeObject<List<string>>(_rec.Meta); BuildDictionary(); }
public List<string> Meta { get { return _meta; } }
public string GetValue(string name) { if (_dic.ContainsKey(name)) return _dic[name]; return null; } public void AddValue(string name, string value) { _dic[name] = value; _meta.Add($"{name}|{value}"); } } }
|