/// <summary> /// Processes json with messages that were loaded when user joined private chat /// </summary> /// <param name="strippedContent">Json used for parsing</param> /// <param name="exportObject">For referencing LideSnooperExport from Lide object</param> /// <param name="prvtMsgs">List where private messages are stored after parsing</param> private static void GetLideLoadedPrivateMessage(string strippedContent, SnooperExportBase exportObject, List <LidePrivateMessage> prvtMsgs) { var o = JObject.Parse(strippedContent); if (!(o.SelectToken("$.data.last_events") is JArray)) { return; } var lastEvents = (JArray)o.SelectToken("$.data.last_events"); foreach (var lastEvent in lastEvents) { if (lastEvent.SelectToken("$.event_type")?.ToString() != "message_sent") { continue; } var privateMessage = new LidePrivateMessage(exportObject) { SourceId = lastEvent.SelectToken("$.user_id")?.ToString(), TargetId = lastEvent.SelectToken("$.target_user_id")?.ToString(), Timestamp = lastEvent.SelectToken("$.created")?.ToString(), Text = lastEvent.SelectToken("$.message")?.ToString() }; prvtMsgs.Add(privateMessage); } }
/// <summary> /// Processes jsons with private messages sent in real time when traffic was captured /// </summary> /// <param name="parsedJsons">List with jsons in strings</param> /// <param name="exportObject">For referencing LideSnooperExport from Lide object</param> /// <param name="prvtMsgs">List where private messages are stored after parsing</param> /// <param name="users">List where loaded discussion users are stored after parsing</param> /// <param name="photos">List where loaded photos are stored after parsing</param> private static void GetLideRealTimePrivateMessages(List <string> parsedJsons, SnooperExportBase exportObject, List <LidePrivateMessage> prvtMsgs, List <LideUser> users, List <LidePhoto> photos) { foreach (var json in parsedJsons) { JObject o; try { o = JObject.Parse(json); } catch (Exception) { continue; } if (o.SelectToken("$.event.event_type")?.ToString() != "message_sent") //Skip conversation read notifications { continue; } var message = new LidePrivateMessage(exportObject) { SourceId = o.SelectToken("$.event.user_id")?.ToString(), TargetId = o.SelectToken("$.event.target_user_id")?.ToString(), Timestamp = o.SelectToken("$.event.created")?.ToString(), Text = o.SelectToken("$.event.message")?.ToString() }; if (message.Timestamp != null) { message.Timestamp = TimeStampToDateTime(UInt64.Parse(message.Timestamp)).ToString("dd.MM.yyyy HH:mm:ss"); } prvtMsgs.Add(message); var tokenUser = o.SelectToken("$.event.user"); var userId = tokenUser.SelectToken("$.id")?.ToString(); if (users.Any(i => i.UserId == userId)) //If user is already in list { continue; } GetLideUser(tokenUser, users, exportObject); GetLidePhoto(tokenUser, photos, users[users.Count - 1].Nickname, exportObject); } parsedJsons.Clear(); }