Ejemplo n.º 1
0
        public ActionResult Leave()
        {
            WebimClient c = CurrentClient(Request["ticket"]);

            c.Leave(Request["id"]);
            return(Json("ok"));
        }
Ejemplo n.º 2
0
        public ActionResult Refresh()
        {
            WebimClient c = CurrentClient(Request["ticket"]);

            c.Offline();
            return(Json("ok"));
        }
Ejemplo n.º 3
0
        public ActionResult Presence()
        {
            WebimClient c      = CurrentClient(Request["ticket"]);
            string      show   = Request["show"];
            string      status = Request["status"];

            c.Publish(new WebimPresence(show, status));
            return(Json("ok"));
        }
Ejemplo n.º 4
0
        public ActionResult Online()
        {
            //当前用户登录
            string uid = CurrentUid();

            if (Request["show"] != null)
            {
                this.endpoint.Show = Request["show"];
            }
            IEnumerable <WebimEndpoint> buddies = plugin.Buddies(uid);
            IEnumerable <WebimRoom>     rooms   = plugin.Rooms(uid);
            //Forward Online to IM Server
            WebimClient client   = CurrentClient();
            var         buddyIds = from b in buddies select b.Id;
            var         roomIds  = from g in rooms select g.Id;

            try
            {
                Dictionary <string, object> data = client.Online(buddyIds, roomIds);

                //Update Buddies
                JsonObject presences = (JsonObject)data["presences"];
                foreach (WebimEndpoint buddy in buddies)
                {
                    if (presences.ContainsKey(buddy.Id))
                    {
                        buddy.Presence = "online";
                        buddy.Show     = (string)presences[buddy.Id];
                    }
                    else
                    {
                        buddy.Presence = "offline";
                        buddy.Show     = "unavailable";
                    }
                }
                if (!WebimConfig.SHOW_UNAVAILABLE)
                {
                    buddies = buddies.Where(buddy => buddy.Presence.Equals("online") && !buddy.Show.Equals("invisible"));
                }
                var buddyArray = (from b in buddies select b.Data()).ToArray();
                var roomArray  = (from g in rooms select g.Data()).ToArray();
                data["success"]     = true;
                data["buddies"]     = buddyArray;
                data["rooms"]       = roomArray;
                data["server_time"] = Timestamp();
                data["user"]        = this.endpoint.Data();
                return(Json(data, JsonRequestBehavior.AllowGet));
            }
            catch (Exception e)
            {
                return(Json(
                           new { success = false, error_msg = e.ToString() },
                           JsonRequestBehavior.AllowGet
                           ));
            }
        }
Ejemplo n.º 5
0
 /**
  * 返回当前的Webim客户端。
  *
  * @param ticket
  *            通信令牌
  * @return 当前用户的Webim客户端
  */
 private WebimClient CurrentClient(string ticket = "")
 {
     if (this.client == null)
     {
         this.client = new WebimClient(this.endpoint,
                                       WebimConfig.DOMAIN,
                                       WebimConfig.APIKEY,
                                       WebimConfig.HOST,
                                       WebimConfig.PORT);
         this.client.Ticket = ticket;
     }
     return(this.client);
 }
Ejemplo n.º 6
0
        public ActionResult Status()
        {
            WebimClient c      = CurrentClient(Request["ticket"]);
            string      to     = Request["to"];
            string      show   = Request["show"];
            string      status = Request["status"];

            if (status == null)
            {
                status = "";
            }
            WebimStatus s = new WebimStatus(to, show, status);

            c.Publish(s);
            return(Json("ok"));
        }
Ejemplo n.º 7
0
        public ActionResult Join()
        {
            WebimClient c    = CurrentClient(Request["ticket"]);
            string      id   = Request["id"];
            WebimRoom   room = plugin.FindRoom(id);

            if (room == null)
            {
                room = model.FindRoom(id);
            }
            if (room != null)
            {
                c.Join(id);
                return(Json(room.Data(), JsonRequestBehavior.AllowGet));
            }
            return(null);
        }
Ejemplo n.º 8
0
        public ActionResult Members()
        {
            WebimClient c      = CurrentClient(Request["ticket"]);
            string      roomId = Request["id"];
            WebimRoom   room   = this.plugin.FindRoom(roomId);
            IEnumerable <WebimMember> members = null;

            if (room != null)
            {
                members = plugin.Members(roomId);
            }
            else
            {
                room = model.FindRoom(roomId);
                if (room != null)
                {
                    members = model.Members(roomId);
                }
            }
            if (room == null)
            {
                return(null);
            }
            JsonObject presences = c.Members(roomId);

            foreach (WebimMember member in members)
            {
                if (presences.ContainsKey(member.Id))
                {
                    member.Presence = "online";
                    member.Show     = (string)presences[member.Id];
                }
                else
                {
                    member.Presence = "offline";
                    member.Show     = "unavailable";
                }
            }
            var data = from m in members select m.Data();

            return(Json(data.ToArray(), JsonRequestBehavior.AllowGet));
        }
Ejemplo n.º 9
0
        public ActionResult Message()
        {
            string      uid     = CurrentUid();
            WebimClient c       = CurrentClient(Request["ticket"]);
            string      type    = Request["type"];
            string      offline = Request["offline"];
            string      to      = Request["to"];
            string      body    = Request["body"];
            string      style   = Request["style"];

            if (style == null)
            {
                style = "";
            }
            WebimMessage msg = new WebimMessage(type, to, c.Endpoint.Nick, body, style, Timestamp());

            msg.Offline = offline.Equals("true") ? true : false;
            c.Publish(msg);
            if (body != null && !body.StartsWith("webim-event:"))
            {
                model.InsertHistory(uid, msg);
            }
            return(Json("ok"));
        }