Exemplo n.º 1
0
        //[OutputCache(Duration = ... // output cache not used here, iis cache is managed directly
        public ActionResult GetEvents(string id, string type, string view, string jsonp, string count, string from, string to, string eventsonly, string mobile, string test, string raw, string raw_sentinel, string style, string theme, string taglist, string tags, string template, string jsurl, string days, string bare_events, string hub, string source, string first)
        {
            if (id == "a2cal")
            {
                id = "AnnArborChronicle";
            }

            ElmcityApp.logger.LogHttpRequest(this.ControllerContext);

            if (view != null)
            {
                view = view.ToLower();
            }

            EventsResult r = null;

            try
            {
                var cr = ElmcityApp.wrd.renderers[id];
                r = new EventsResult(this, cr, id, type, view, jsonp, count, from, to, eventsonly, mobile, test, raw, raw_sentinel, style, theme, taglist, tags, template, jsurl, days, bare_events, hub, source, first);
            }
            catch (Exception e)
            {
                GenUtils.PriorityLogMsg("exception", "GetEvents: " + id, e.Message);
            }
            return(r);
        }
Exemplo n.º 2
0
        public EventsResult GetEvents(string chatRoomId, string token, long fromTimestamp, string messengerTargetUserId)
        {
            var    result = new EventsResult();
            string userId = chatRoomStorage.GetUserIdByToken(token);

            if (userId == null)
            {
                result.Error = "Chat disconnected!";
                return(result);
            }

            chatRoomStorage.UpdateOnline(chatRoomId, userId);

            //get all the messages for the current user
            IEnumerable <Message> messages = chatRoomStorage.GetMessages(chatRoomId, userId, fromTimestamp);

            //if in messenger mode then filter messages to be only from the target user or from the current user himself
            if (messengerTargetUserId != null)
            {
                messages = messages.Where(m => m.FromUserId == userId || m.FromUserId == messengerTargetUserId);
            }

            //get only joined, left and kicked messages for ignored users
            result.Messages = messages.Where(m => !chatUserProvider.IsUserIgnored(userId, m.FromUserId) ||
                                             m.MessageType == MessageTypeEnum.UserJoined ||
                                             m.MessageType == MessageTypeEnum.UserLeft ||
                                             m.MessageType == MessageTypeEnum.Kicked).ToArray();

            var joinMessages  = messages.Where(m => m.MessageType == MessageTypeEnum.UserJoined);
            var leaveMessages = messages.Where(m => m.MessageType == MessageTypeEnum.UserLeft || m.MessageType == MessageTypeEnum.Kicked);

            var joinedUsers = joinMessages.Where(j => !leaveMessages.Any(l => l.FromUserId == j.FromUserId && l.Timestamp > j.Timestamp)).Select(
                m => chatUserProvider.GetUser(m.FromUserId)).ToArray();
            var leftUsers = leaveMessages.Where(l => !joinMessages.Any(j => j.FromUserId == l.FromUserId && j.Timestamp > l.Timestamp)).Select(
                m => chatUserProvider.GetUser(m.FromUserId)).ToArray();

            result.UsersJoined = joinedUsers;
            result.UsersLeft   = leftUsers;

            if (ConfigurationManager.AppSettings["PollingInterval"] != null)
            {
                result.CallInterval = Convert.ToInt32(ConfigurationManager.AppSettings["PollingInterval"]);
            }

            return(result);
        }
Exemplo n.º 3
0
        //[OutputCache(Duration = ... // output cache not used here, iis cache is managed directly
        public ActionResult GetEvents(string id, string type, string view, string jsonp, string count, string from, string to, string eventsonly, string mobile, string test, string raw, string raw_sentinel, string style, string theme, string taglist)
        {
            if (id == "a2cal")
                id = "AnnArborChronicle";

            ElmcityApp.logger.LogHttpRequest(this.ControllerContext);

            if (view != null)
                view = view.ToLower();

            EventsResult r = null;
            try
            {
                var cr = ElmcityApp.wrd.renderers[id];
                r = new EventsResult(this, cr, id, type, view, jsonp, count, from, to, eventsonly, mobile, test, raw, raw_sentinel, style, theme, taglist);
            }
            catch (Exception e)
            {
                GenUtils.PriorityLogMsg("exception", "GetEvents: " + id, e.Message);
            }
            return r;
        }
Exemplo n.º 4
0
        public EventsResult GetEvents(string chatRoomId, string token, long fromTimestamp, string messengerTargetUserId)
        {
            var result = new EventsResult();
            string userId = chatRoomStorage.GetUserIdByToken(token);
            if (userId == null)
            {
                result.Error = "Chat disconnected!";
                return result;
            }

            chatRoomStorage.UpdateOnline(chatRoomId, userId);

            //get all the messages for the current user
            IEnumerable<Message> messages = chatRoomStorage.GetMessages(chatRoomId, userId, fromTimestamp);

            //if in messenger mode then filter messages to be only from the target user or from the current user himself
            if (messengerTargetUserId != null)
            {
                messages = messages.Where(m => m.FromUserId == userId || m.FromUserId == messengerTargetUserId);
            }

            //get only joined, left and kicked messages for ignored users
            result.Messages = messages.Where(m =>!chatUserProvider.IsUserIgnored(userId, m.FromUserId) ||
                                                m.MessageType == MessageTypeEnum.UserJoined ||
                                                m.MessageType == MessageTypeEnum.UserLeft ||
                                                m.MessageType == MessageTypeEnum.Kicked).ToArray();

            var joinMessages = messages.Where(m => m.MessageType == MessageTypeEnum.UserJoined);
            var leaveMessages = messages.Where(m => m.MessageType == MessageTypeEnum.UserLeft || m.MessageType == MessageTypeEnum.Kicked);

            var joinedUsers = joinMessages.Where(j => !leaveMessages.Any(l => l.FromUserId == j.FromUserId && l.Timestamp > j.Timestamp)).Select(
                                m => chatUserProvider.GetUser(m.FromUserId)).ToArray();
            var leftUsers = leaveMessages.Where(l => !joinMessages.Any(j => j.FromUserId == l.FromUserId && j.Timestamp > l.Timestamp)).Select(
                                m => chatUserProvider.GetUser(m.FromUserId)).ToArray();

            result.UsersJoined = joinedUsers;
            result.UsersLeft = leftUsers;

            if (ConfigurationManager.AppSettings["PollingInterval"] != null)
                result.CallInterval = Convert.ToInt32(ConfigurationManager.AppSettings["PollingInterval"]);

            return result;
        }