示例#1
0
        /// <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);
            }
        }
示例#2
0
        /// <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();
        }