Exemplo n.º 1
0
        /// <summary>
        /// Processes jsons with discussion 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="discussionMsgs">List where discussion messages are stored after parsing</param>
        /// <param name="photos">List where photos are stored after parsing</param>
        /// <param name="users">List where user info is stored after parsing</param>
        private static void GetLideRealTimeDiscussionMessage(List <string> parsedJsons, SnooperExportBase exportObject, List <LideDiscussionMessage> discussionMsgs, List <LidePhoto> photos, List <LideUser> users)
        {
            int tmpInt;

            foreach (var json in parsedJsons)
            {
                JObject o;

                try { o = JObject.Parse(json); }
                catch (Exception) { continue; }

                var message = new LideDiscussionMessage(exportObject) //Parse message
                {
                    Title        = o.SelectToken("$.event.discussion.contributions[0].title")?.ToString(),
                    Text         = o.SelectToken("$.event.discussion.contributions[0].content")?.ToString(),
                    SourceId     = o.SelectToken("$.event.discussion.contributions[0].user_id")?.ToString(),
                    Timestamp    = o.SelectToken("$.event.discussion.contributions[0].create_date")?.ToString(),
                    Deleted      = false,
                    ThreadId     = Int32.TryParse(o.SelectToken("$.event.discussion.contributions[0].thread_id")?.ToString(), out tmpInt) ? tmpInt : (int?)null,
                    DiscussionId = Int32.TryParse(o.SelectToken("$.event.discussion.contributions[0].discussion_id")?.ToString(), out tmpInt) ? tmpInt : (int?)null
                };
                if (message.Timestamp != null)
                {
                    message.Timestamp = TimeStampToDateTime(UInt64.Parse(message.Timestamp)).ToString("dd.MM.yyyy HH:mm:ss");
                }

                discussionMsgs.Add(message);

                if (string.IsNullOrEmpty(o.SelectToken("$.event.discussion.contributing_users")?.ToString())) //If Json does not contain informations about users
                {
                    return;
                }

                var contributingUsers = o.SelectToken("$.event.discussion.contributing_users");
                foreach (var user in contributingUsers.Children())
                {
                    if (!(user is JProperty))
                    {
                        continue;
                    }

                    var usrProperty = (JProperty)user;

                    var userId = usrProperty.Value.SelectToken("$.id")?.ToString(); //Find id of current user

                    if (users.Any(i => i.UserId == userId))                         //If user is already in list
                    {
                        continue;
                    }

                    GetLideUser(usrProperty.Value, users, exportObject);
                    GetLidePhoto(usrProperty.Value, photos, users[users.Count - 1].Nickname, exportObject);
                }
            }
            parsedJsons.Clear();
        }
Exemplo n.º 2
0
        /// <summary>
        /// Processes json with messages that were loaded when user joined discussion room
        /// </summary>
        /// <param name="tokenMessage">Token that represents json with messges</param>
        /// <param name="discussionMsgs">List where loaded discussion messages are stored after parsing</param>
        /// <param name="exportObject">For referencing LideSnooperExport from Lide object</param>
        private static void GetLideLoadedDiscussionMessage(JToken tokenMessage, List <LideDiscussionMessage> discussionMsgs, SnooperExportBase exportObject)
        {
            int  tmpInt;
            bool tmpBool;

            var msgObject = new LideDiscussionMessage(exportObject)
            {
                Title        = tokenMessage.SelectToken("$.title")?.ToString(),
                Text         = tokenMessage.SelectToken("$.content")?.ToString(),
                SourceId     = tokenMessage.SelectToken("$.user_id")?.ToString(),
                Timestamp    = tokenMessage.SelectToken("$.create_date")?.ToString(),
                Deleted      = Boolean.TryParse(tokenMessage.SelectToken("$.deleted")?.ToString(), out tmpBool) ? tmpBool : (bool?)null,
                ThreadId     = Int32.TryParse(tokenMessage.SelectToken("$.thread_id")?.ToString(), out tmpInt) ? tmpInt : (int?)null,
                DiscussionId = Int32.TryParse(tokenMessage.SelectToken("$.discussion_id")?.ToString(), out tmpInt) ? tmpInt : (int?)null
            };

            if (msgObject.Timestamp != null)
            {
                msgObject.Timestamp = TimeStampToDateTime(UInt64.Parse(msgObject.Timestamp)).ToString("dd.MM.yyyy HH:mm:ss");
            }
            discussionMsgs.Add(msgObject);
        }