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.
149 lines
4.2 KiB
149 lines
4.2 KiB
using CircleSDK.Model;
|
|
using CircleViewer.Dialogs;
|
|
using Newtonsoft.Json;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using Path = System.IO.Path;
|
|
|
|
namespace CircleViewer.Models
|
|
{
|
|
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}");
|
|
}
|
|
}
|
|
}
|