public ActionResult Leave() { WebimClient c = CurrentClient(Request["ticket"]); c.Leave(Request["id"]); return(Json("ok")); }
public ActionResult Refresh() { WebimClient c = CurrentClient(Request["ticket"]); c.Offline(); return(Json("ok")); }
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")); }
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 )); } }
/** * 返回当前的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); }
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")); }
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); }
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)); }
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")); }