internal static MessageResponse Parse(JsonData data)
{
if (data == null || !data.Has("message_id") || !data.Has("from") || !data.Has("date") || !data.Has("chat"))
{
return null;
}
var messageResponse = new MessageResponse
{
MessageId = data.Get<int>("message_id"),
From = UserResponse.Parse(data.GetJson("from")),
Date = data.GetDateTime("date"),
Chat = ChatResponse.Parse(data.GetJson("chat")),
ForwardFrom = UserResponse.Parse(data.GetJson("forward_from")),
ForwardDate = data.GetDateTime("forward_date"),
ReplyToMessage = Parse(data.GetJson("reply_to_message")),
Text = data.Get<string>("text"),
Audio = AudioResponse.Parse(data.GetJson("audio")),
Document = DocumentResponse.Parse(data.GetJson("document")),
Sticker = StickerResponse.Parse(data.GetJson("sticker")),
Video = VideoResponse.Parse(data.GetJson("video")),
Voice = VoiceResponse.Parse(data.GetJson("voice")),
Caption = data.Get<string>("caption"),
Contact = ContactResponse.Parse(data.GetJson("contact")),
Location = LocationResponse.Parse(data.GetJson("location")),
NewChatParticipant = UserResponse.Parse(data.GetJson("new_chat_participant")),
LeftChatParticipant = UserResponse.Parse(data.GetJson("left_chat_participant")),
NewChatTitle = data.Get<string>("new_chat_title"),
DeleteChatPhoto = data.Get<bool?>("delete_chat_photo"),
GroupChatCreated = data.Get<bool?>("group_chat_created"),
SupergroupChatCreated = data.Get<bool?>("supergroup_chat_created"),
ChannelChatCreated = data.Get<bool?>("channel_chat_created"),
MigrateToChatId = data.Get<int?>("migrate_to_chat_id"),
MigrateFromChatId = data.Get<int?>("migrate_from_chat_id")
};
if (data.Has("photo"))
{
foreach (var photo in data.GetJsonList("photo"))
{
messageResponse.Photo.Add(PhotoSizeResponse.Parse(photo));
}
}
if (data.Has("new_chat_photo"))
{
foreach (var photo in data.GetJsonList("new_chat_photo"))
{
messageResponse.NewChatPhoto.Add(PhotoSizeResponse.Parse(photo));
}
}
return messageResponse;
}