private FizzUserUpdateEventData ParsePresenceUpdateEventData(FizzTopicMessage message) { JSONClass payload = JSONNode.Parse(message.Data).AsObject; FizzUserUpdateEventData update = new FizzUserUpdateEventData(); FizzLogger.D(message.Data); update.Reason = FizzUserUpdateEventData.UpdateReason.Presence; update.UserId = message.From; update.Online = payload["is_online"].AsBool; return(update); }
private FizzGroupMemberEventData ParseMemberEventData(FizzTopicMessage message) { JSONClass payload = JSONNode.Parse(message.Data).AsObject; FizzGroupMemberEventData data = new FizzGroupMemberEventData(); data.MemberId = payload["id"]; data.GroupId = message.From; data.State = FizzUtils.ParseState(payload["state"]); data.Role = FizzUtils.ParseRole(payload["role"]); return(data); }
private FizzUserUpdateEventData ParseUserUpdateEventData(FizzTopicMessage message) { JSONClass payload = JSONNode.Parse(message.Data).AsObject; FizzUserUpdateEventData update = new FizzUserUpdateEventData(); FizzLogger.D(message.Data); update.Reason = FizzUserUpdateEventData.UpdateReason.Profile; update.UserId = message.From; update.Nick = payload["nick"]; update.StatusMessage = payload["status_message"]; update.ProfileUrl = payload["profile_url"]; return(update); }
private void OnMessage(object sender, byte[] messagePayload) { try { string payload = Encoding.UTF8.GetString(messagePayload); FizzTopicMessage message = new FizzTopicMessage(payload); FizzLogger.D("OnMessage with id: " + message.Id); switch (message.Type) { case "CMSGP": if (OnMessagePublished != null) { OnMessagePublished.Invoke(AdaptTo(message)); } break; case "CMSGU": if (OnMessageUpdated != null) { OnMessageUpdated.Invoke(AdaptTo(message)); } break; case "CMSGD": if (OnMessageDeleted != null) { OnMessageDeleted.Invoke(AdaptTo(message)); } break; default: FizzLogger.W("unrecognized packet received: " + payload); break; } } catch { FizzLogger.W("received invalid message: " + messagePayload); } }
public void IntegrityTest() { JSONClass json = new JSONClass(); long id = FizzUtils.Now(); long created = FizzUtils.Now(); json[FizzTopicMessage.KEY_ID].AsDouble = (double)id; json[FizzTopicMessage.KEY_TYPE] = "test"; json[FizzTopicMessage.KEY_FROM] = "from"; json[FizzTopicMessage.KEY_DATA] = "data"; json[FizzTopicMessage.KEY_CREATED].AsDouble = (double)created; var m = new FizzTopicMessage(json.ToString()); Assert.AreEqual(m.Id, id); Assert.AreEqual(m.Type, "test"); Assert.AreEqual(m.From, "from"); Assert.AreEqual(m.Data, "data"); Assert.AreEqual(m.Created, created); }
private FizzGroupUpdateEventData ParseGroupUpdateEventData(FizzTopicMessage message) { JSONClass payload = JSONNode.Parse(message.Data).AsObject; FizzGroupUpdateEventData update = new FizzGroupUpdateEventData(); update.GroupId = message.From; string reason = payload["reason"]; FizzLogger.D(message.Data); if (reason == "profile") { update.Reason = FizzGroupUpdateEventData.UpdateReason.Profile; update.Title = payload["title"]; update.ImageURL = payload["image_url"]; update.Description = payload["description"]; update.Type = payload["type"]; } return(update); }
private FizzChannelMessage AdaptTo(FizzTopicMessage message) { JSONNode payload = JSONNode.Parse(message.Data); JSONClass translationData = payload["translations"].AsObject; IDictionary <string, string> translations = null; if (translationData != null) { translations = new Dictionary <string, string> (); foreach (string key in translationData.Keys) { translations.Add(key, translationData[key]); } } Dictionary <string, string> dataDict = null; if (payload["data"] != null) { JSONNode messageData = JSONNode.Parse(payload["data"]); if (messageData != null) { dataDict = new Dictionary <string, string> (); foreach (string key in messageData.Keys) { dataDict.Add(key, messageData[key]); } } } return(new FizzChannelMessage( message.Id, message.From, payload["nick"], payload["to"], payload["body"], dataDict, translations, message.Created )); }
private void OnMessage(object sender, byte[] messagePayload) { try { string payload = Encoding.UTF8.GetString(messagePayload); FizzTopicMessage message = new FizzTopicMessage(payload); FizzLogger.D("OnMessage with id: " + message.Id); switch (message.Type) { case "CMSGP": if (OnMessagePublished != null) { OnMessagePublished.Invoke(AdaptTo(message)); } break; case "CMSGU": if (OnMessageUpdated != null) { OnMessageUpdated.Invoke(AdaptTo(message)); } break; case "CMSGD": if (OnMessageDeleted != null) { OnMessageDeleted.Invoke(AdaptTo(message)); } break; case "GRPMA": if (OnGroupMemberAdded != null) { OnGroupMemberAdded.Invoke(ParseMemberEventData(message)); } break; case "GRPMU": if (OnGroupMemberUpdated != null) { OnGroupMemberUpdated.Invoke(ParseMemberEventData(message)); } break; case "GRPMR": if (OnGroupMemberRemoved != null) { OnGroupMemberRemoved.Invoke(ParseMemberEventData(message)); } break; case "GRPU": if (OnGroupUpdated != null) { OnGroupUpdated.Invoke(ParseGroupUpdateEventData(message)); } break; case "USRPU": if (OnUserUpdated != null) { OnUserUpdated.Invoke(ParsePresenceUpdateEventData(message)); } break; case "USRU": if (OnUserUpdated != null) { OnUserUpdated.Invoke(ParseUserUpdateEventData(message)); } break; default: FizzLogger.W("unrecognized packet received: " + payload); break; } } catch { FizzLogger.W("received invalid message: " + messagePayload); } }