private LongPollServerUpdateData GetUpdateDataForNewMessageLongPollData(List <object> updateDataRaw) { try { LongPollServerUpdateData serverUpdateData = new LongPollServerUpdateData(); serverUpdateData.UpdateType = LongPollServerUpdateType.MessageHasBeenAdded; long num1 = long.Parse(updateDataRaw[1].ToString()); bool flag1 = (long.Parse(updateDataRaw[2].ToString()) & 2L) == 2L; long num2 = long.Parse(updateDataRaw[3].ToString()); long num3 = long.Parse(updateDataRaw[4].ToString()); string str = updateDataRaw[6].ToString(); bool flag2 = false; bool flag3 = false; long num4 = 0; if (updateDataRaw.Count > 7) { foreach (KeyValuePair <string, JToken> keyValuePair in updateDataRaw[7] as JObject) { if (keyValuePair.Key == "from") { num4 = num2 - 2000000000L; num2 = long.Parse(keyValuePair.Value.ToString()); flag3 = true; } else { flag2 = true; } } } serverUpdateData.message_id = num1; serverUpdateData.@out = flag1; serverUpdateData.user_id = num2; serverUpdateData.chat_id = num4; serverUpdateData.timestamp = num3; serverUpdateData.text = str; serverUpdateData.isChat = flag3; serverUpdateData.hasAttachOrForward = flag2; return(serverUpdateData); } catch (Exception ex) { Logger.Instance.Error("GetUpdateDataForNewMessage", ex); return(null); } }
private List <LongPollServerUpdateData> ReadUpdatesResponseFromRaw(List <List <object> > rawUpdates, Func <List <object>, LongPollServerUpdateData> getUpdatesForNewMessageFunc) { List <LongPollServerUpdateData> serverUpdateDataList1 = new List <LongPollServerUpdateData>(); if (rawUpdates != null) { foreach (List <object> rawUpdate in rawUpdates) { if (rawUpdate != null) { int num1 = int.Parse(rawUpdate.First <object>().ToString()); if (num1 == 80) { int result = 0; if (rawUpdate.Count > 1 && int.TryParse(rawUpdate[1].ToString(), out result)) { serverUpdateDataList1.Add(new LongPollServerUpdateData() { UpdateType = LongPollServerUpdateType.NewCounter, Counter = result }); } } if (num1 == 9 || num1 == 8) { int num2 = 7; if (rawUpdate.Count > 2) { num2 = int.Parse(rawUpdate[2].ToString()) % 256; } long num3 = -long.Parse(rawUpdate[1].ToString()); serverUpdateDataList1.Add(new LongPollServerUpdateData() { UpdateType = (LongPollServerUpdateType)num1, user_id = num3, Platform = num2 }); } if (num1 == 6) { long num2 = long.Parse(rawUpdate[1].ToString()); LongPollServerUpdateData serverUpdateData = new LongPollServerUpdateData() { UpdateType = LongPollServerUpdateType.IncomingMessagesRead }; if (num2 >= 2000000000L) { serverUpdateData.chat_id = num2 - 2000000000L; } else { serverUpdateData.user_id = num2; } serverUpdateData.message_id = long.Parse(rawUpdate[2].ToString()); serverUpdateDataList1.Add(serverUpdateData); } if (num1 == 4) { LongPollServerUpdateData serverUpdateData = getUpdatesForNewMessageFunc(rawUpdate); if (serverUpdateData != null) { serverUpdateDataList1.Add(serverUpdateData); } } if (num1 == 3) { int num2 = int.Parse(rawUpdate[2].ToString()); int num3 = 1; if ((num2 & num3) == 1) { long num4 = long.Parse(rawUpdate[1].ToString()); if (rawUpdate.Count >= 4) { long num5 = long.Parse(rawUpdate[3].ToString()); if (num5 <= 2000000000L && num5 > 0L) { serverUpdateDataList1.Add(new LongPollServerUpdateData() { message_id = num4, user_id = num5, UpdateType = LongPollServerUpdateType.MessageHasBeenRead }); } else { List <LongPollServerUpdateData> serverUpdateDataList2 = serverUpdateDataList1; LongPollServerUpdateData serverUpdateData = new LongPollServerUpdateData(); serverUpdateData.message_id = num4; long num6 = num5 - 2000000000L; serverUpdateData.chat_id = num6; int num7 = 1; serverUpdateData.isChat = num7 != 0; int num8 = 10; serverUpdateData.UpdateType = (LongPollServerUpdateType)num8; serverUpdateDataList2.Add(serverUpdateData); } } } int num9 = 128; if ((num2 & num9) == 128) { LongPollServerUpdateData serverUpdateData = this.ReadUserOrChatIds(rawUpdate); if (serverUpdateData != null) { serverUpdateData.UpdateType = LongPollServerUpdateType.MessageHasBeenRestored; serverUpdateDataList1.Add(serverUpdateData); } } } if (num1 == 2 && (int.Parse(rawUpdate[2].ToString()) & 128) == 128) { LongPollServerUpdateData serverUpdateData = this.ReadUserOrChatIds(rawUpdate); if (serverUpdateData != null) { serverUpdateData.UpdateType = LongPollServerUpdateType.MessageHasBeenDeleted; serverUpdateDataList1.Add(serverUpdateData); } } if (num1 == 51) { long num2 = long.Parse(rawUpdate[1].ToString()); serverUpdateDataList1.Add(new LongPollServerUpdateData() { UpdateType = LongPollServerUpdateType.ChatParamsWereChanged, isChat = true, chat_id = num2 }); } if (num1 == 61) { long num2 = long.Parse(rawUpdate[1].ToString()); serverUpdateDataList1.Add(new LongPollServerUpdateData() { UpdateType = LongPollServerUpdateType.UserIsTyping, user_id = num2 }); } if (num1 == 62) { long num2 = long.Parse(rawUpdate[1].ToString()); long num3 = long.Parse(rawUpdate[2].ToString()); serverUpdateDataList1.Add(new LongPollServerUpdateData() { UpdateType = LongPollServerUpdateType.UserIsTypingInChat, user_id = num2, chat_id = num3, isChat = true }); } } } } return(serverUpdateDataList1); }