diff --git a/client/type.go b/client/type.go index 243cae4..996e97a 100755 --- a/client/type.go +++ b/client/type.go @@ -5288,6 +5288,25 @@ func (*MessageSenders) GetType() string { return TypeMessageSenders } +func (messageSenders *MessageSenders) UnmarshalJSON(data []byte) error { + var tmp struct { + TotalCount int32 `json:"total_count"` + Senders []json.RawMessage `json:"senders"` + } + + err := json.Unmarshal(data, &tmp) + if err != nil { + return err + } + + messageSenders.TotalCount = tmp.TotalCount + + fieldSenders, _ := UnmarshalListOfMessageSender(tmp.Senders) + messageSenders.Senders = fieldSenders + + return nil +} + // The message was originally sent by a known user type MessageForwardOriginUser struct { meta @@ -5489,6 +5508,31 @@ func (*MessageReplyInfo) GetType() string { return TypeMessageReplyInfo } +func (messageReplyInfo *MessageReplyInfo) UnmarshalJSON(data []byte) error { + var tmp struct { + ReplyCount int32 `json:"reply_count"` + RecentRepliers []json.RawMessage `json:"recent_repliers"` + LastReadInboxMessageId int64 `json:"last_read_inbox_message_id"` + LastReadOutboxMessageId int64 `json:"last_read_outbox_message_id"` + LastMessageId int64 `json:"last_message_id"` + } + + err := json.Unmarshal(data, &tmp) + if err != nil { + return err + } + + messageReplyInfo.ReplyCount = tmp.ReplyCount + messageReplyInfo.LastReadInboxMessageId = tmp.LastReadInboxMessageId + messageReplyInfo.LastReadOutboxMessageId = tmp.LastReadOutboxMessageId + messageReplyInfo.LastMessageId = tmp.LastMessageId + + fieldRecentRepliers, _ := UnmarshalListOfMessageSender(tmp.RecentRepliers) + messageReplyInfo.RecentRepliers = fieldRecentRepliers + + return nil +} + // Contains information about interactions with a message type MessageInteractionInfo struct { meta @@ -6319,6 +6363,22 @@ func (*ChatLists) GetType() string { return TypeChatLists } +func (chatLists *ChatLists) UnmarshalJSON(data []byte) error { + var tmp struct { + ChatLists []json.RawMessage `json:"chat_lists"` + } + + err := json.Unmarshal(data, &tmp) + if err != nil { + return err + } + + fieldChatLists, _ := UnmarshalListOfChatList(tmp.ChatLists) + chatLists.ChatLists = fieldChatLists + + return nil +} + // The chat is sponsored by the user's MTProxy server type ChatSourceMtprotoProxy struct { meta @@ -8202,6 +8262,22 @@ func (*RichTexts) RichTextType() string { return TypeRichTexts } +func (richTexts *RichTexts) UnmarshalJSON(data []byte) error { + var tmp struct { + Texts []json.RawMessage `json:"texts"` + } + + err := json.Unmarshal(data, &tmp) + if err != nil { + return err + } + + fieldTexts, _ := UnmarshalListOfRichText(tmp.Texts) + richTexts.Texts = fieldTexts + + return nil +} + // Contains a caption of an instant view web page block, consisting of a text and a trailing credit type PageBlockCaption struct { meta @@ -8272,6 +8348,25 @@ func (*PageBlockListItem) GetType() string { return TypePageBlockListItem } +func (pageBlockListItem *PageBlockListItem) UnmarshalJSON(data []byte) error { + var tmp struct { + Label string `json:"label"` + PageBlocks []json.RawMessage `json:"page_blocks"` + } + + err := json.Unmarshal(data, &tmp) + if err != nil { + return err + } + + pageBlockListItem.Label = tmp.Label + + fieldPageBlocks, _ := UnmarshalListOfPageBlock(tmp.PageBlocks) + pageBlockListItem.PageBlocks = fieldPageBlocks + + return nil +} + // The content should be left-aligned type PageBlockHorizontalAlignmentLeft struct { meta @@ -9367,6 +9462,33 @@ func (*PageBlockEmbeddedPost) PageBlockType() string { return TypePageBlockEmbeddedPost } +func (pageBlockEmbeddedPost *PageBlockEmbeddedPost) UnmarshalJSON(data []byte) error { + var tmp struct { + Url string `json:"url"` + Author string `json:"author"` + AuthorPhoto *Photo `json:"author_photo"` + Date int32 `json:"date"` + PageBlocks []json.RawMessage `json:"page_blocks"` + Caption *PageBlockCaption `json:"caption"` + } + + err := json.Unmarshal(data, &tmp) + if err != nil { + return err + } + + pageBlockEmbeddedPost.Url = tmp.Url + pageBlockEmbeddedPost.Author = tmp.Author + pageBlockEmbeddedPost.AuthorPhoto = tmp.AuthorPhoto + pageBlockEmbeddedPost.Date = tmp.Date + pageBlockEmbeddedPost.Caption = tmp.Caption + + fieldPageBlocks, _ := UnmarshalListOfPageBlock(tmp.PageBlocks) + pageBlockEmbeddedPost.PageBlocks = fieldPageBlocks + + return nil +} + // A collage type PageBlockCollage struct { meta @@ -9396,6 +9518,25 @@ func (*PageBlockCollage) PageBlockType() string { return TypePageBlockCollage } +func (pageBlockCollage *PageBlockCollage) UnmarshalJSON(data []byte) error { + var tmp struct { + PageBlocks []json.RawMessage `json:"page_blocks"` + Caption *PageBlockCaption `json:"caption"` + } + + err := json.Unmarshal(data, &tmp) + if err != nil { + return err + } + + pageBlockCollage.Caption = tmp.Caption + + fieldPageBlocks, _ := UnmarshalListOfPageBlock(tmp.PageBlocks) + pageBlockCollage.PageBlocks = fieldPageBlocks + + return nil +} + // A slideshow type PageBlockSlideshow struct { meta @@ -9425,6 +9566,25 @@ func (*PageBlockSlideshow) PageBlockType() string { return TypePageBlockSlideshow } +func (pageBlockSlideshow *PageBlockSlideshow) UnmarshalJSON(data []byte) error { + var tmp struct { + PageBlocks []json.RawMessage `json:"page_blocks"` + Caption *PageBlockCaption `json:"caption"` + } + + err := json.Unmarshal(data, &tmp) + if err != nil { + return err + } + + pageBlockSlideshow.Caption = tmp.Caption + + fieldPageBlocks, _ := UnmarshalListOfPageBlock(tmp.PageBlocks) + pageBlockSlideshow.PageBlocks = fieldPageBlocks + + return nil +} + // A link to a chat type PageBlockChatLink struct { meta @@ -9545,9 +9705,9 @@ func (*PageBlockDetails) PageBlockType() string { func (pageBlockDetails *PageBlockDetails) UnmarshalJSON(data []byte) error { var tmp struct { - Header json.RawMessage `json:"header"` - PageBlocks []PageBlock `json:"page_blocks"` - IsOpen bool `json:"is_open"` + Header json.RawMessage `json:"header"` + PageBlocks []json.RawMessage `json:"page_blocks"` + IsOpen bool `json:"is_open"` } err := json.Unmarshal(data, &tmp) @@ -9555,12 +9715,14 @@ func (pageBlockDetails *PageBlockDetails) UnmarshalJSON(data []byte) error { return err } - pageBlockDetails.PageBlocks = tmp.PageBlocks pageBlockDetails.IsOpen = tmp.IsOpen fieldHeader, _ := UnmarshalRichText(tmp.Header) pageBlockDetails.Header = fieldHeader + fieldPageBlocks, _ := UnmarshalListOfPageBlock(tmp.PageBlocks) + pageBlockDetails.PageBlocks = fieldPageBlocks + return nil } @@ -9678,6 +9840,31 @@ func (*WebPageInstantView) GetType() string { return TypeWebPageInstantView } +func (webPageInstantView *WebPageInstantView) UnmarshalJSON(data []byte) error { + var tmp struct { + PageBlocks []json.RawMessage `json:"page_blocks"` + ViewCount int32 `json:"view_count"` + Version int32 `json:"version"` + IsRtl bool `json:"is_rtl"` + IsFull bool `json:"is_full"` + } + + err := json.Unmarshal(data, &tmp) + if err != nil { + return err + } + + webPageInstantView.ViewCount = tmp.ViewCount + webPageInstantView.Version = tmp.Version + webPageInstantView.IsRtl = tmp.IsRtl + webPageInstantView.IsFull = tmp.IsFull + + fieldPageBlocks, _ := UnmarshalListOfPageBlock(tmp.PageBlocks) + webPageInstantView.PageBlocks = fieldPageBlocks + + return nil +} + // Describes a web page preview type WebPage struct { meta @@ -10795,12 +10982,12 @@ func (*InputIdentityDocument) GetType() string { func (inputIdentityDocument *InputIdentityDocument) UnmarshalJSON(data []byte) error { var tmp struct { - Number string `json:"number"` - ExpiryDate *Date `json:"expiry_date"` - FrontSide json.RawMessage `json:"front_side"` - ReverseSide json.RawMessage `json:"reverse_side"` - Selfie json.RawMessage `json:"selfie"` - Translation []InputFile `json:"translation"` + Number string `json:"number"` + ExpiryDate *Date `json:"expiry_date"` + FrontSide json.RawMessage `json:"front_side"` + ReverseSide json.RawMessage `json:"reverse_side"` + Selfie json.RawMessage `json:"selfie"` + Translation []json.RawMessage `json:"translation"` } err := json.Unmarshal(data, &tmp) @@ -10810,7 +10997,6 @@ func (inputIdentityDocument *InputIdentityDocument) UnmarshalJSON(data []byte) e inputIdentityDocument.Number = tmp.Number inputIdentityDocument.ExpiryDate = tmp.ExpiryDate - inputIdentityDocument.Translation = tmp.Translation fieldFrontSide, _ := UnmarshalInputFile(tmp.FrontSide) inputIdentityDocument.FrontSide = fieldFrontSide @@ -10821,6 +11007,9 @@ func (inputIdentityDocument *InputIdentityDocument) UnmarshalJSON(data []byte) e fieldSelfie, _ := UnmarshalInputFile(tmp.Selfie) inputIdentityDocument.Selfie = fieldSelfie + fieldTranslation, _ := UnmarshalListOfInputFile(tmp.Translation) + inputIdentityDocument.Translation = fieldTranslation + return nil } @@ -10874,6 +11063,26 @@ func (*InputPersonalDocument) GetType() string { return TypeInputPersonalDocument } +func (inputPersonalDocument *InputPersonalDocument) UnmarshalJSON(data []byte) error { + var tmp struct { + Files []json.RawMessage `json:"files"` + Translation []json.RawMessage `json:"translation"` + } + + err := json.Unmarshal(data, &tmp) + if err != nil { + return err + } + + fieldFiles, _ := UnmarshalListOfInputFile(tmp.Files) + inputPersonalDocument.Files = fieldFiles + + fieldTranslation, _ := UnmarshalListOfInputFile(tmp.Translation) + inputPersonalDocument.Translation = fieldTranslation + + return nil +} + // A Telegram Passport element containing the user's personal details type PassportElementPersonalDetails struct { meta @@ -11599,6 +11808,22 @@ func (*PassportElements) GetType() string { return TypePassportElements } +func (passportElements *PassportElements) UnmarshalJSON(data []byte) error { + var tmp struct { + Elements []json.RawMessage `json:"elements"` + } + + err := json.Unmarshal(data, &tmp) + if err != nil { + return err + } + + fieldElements, _ := UnmarshalListOfPassportElement(tmp.Elements) + passportElements.Elements = fieldElements + + return nil +} + // The element contains an error in an unspecified place. The error will be considered resolved when new data is added type PassportElementErrorSourceUnspecified struct { meta @@ -12007,6 +12232,25 @@ func (*PassportElementsWithErrors) GetType() string { return TypePassportElementsWithErrors } +func (passportElementsWithErrors *PassportElementsWithErrors) UnmarshalJSON(data []byte) error { + var tmp struct { + Elements []json.RawMessage `json:"elements"` + Errors []*PassportElementError `json:"errors"` + } + + err := json.Unmarshal(data, &tmp) + if err != nil { + return err + } + + passportElementsWithErrors.Errors = tmp.Errors + + fieldElements, _ := UnmarshalListOfPassportElement(tmp.Elements) + passportElementsWithErrors.Elements = fieldElements + + return nil +} + // Contains encrypted Telegram Passport data credentials type EncryptedCredentials struct { meta @@ -13578,6 +13822,22 @@ func (*MessagePassportDataSent) MessageContentType() string { return TypeMessagePassportDataSent } +func (messagePassportDataSent *MessagePassportDataSent) UnmarshalJSON(data []byte) error { + var tmp struct { + Types []json.RawMessage `json:"types"` + } + + err := json.Unmarshal(data, &tmp) + if err != nil { + return err + } + + fieldTypes, _ := UnmarshalListOfPassportElementType(tmp.Types) + messagePassportDataSent.Types = fieldTypes + + return nil +} + // Telegram Passport data has been received; for bots only type MessagePassportDataReceived struct { meta @@ -18448,6 +18708,31 @@ func (*InlineQueryResults) GetType() string { return TypeInlineQueryResults } +func (inlineQueryResults *InlineQueryResults) UnmarshalJSON(data []byte) error { + var tmp struct { + InlineQueryId JsonInt64 `json:"inline_query_id"` + NextOffset string `json:"next_offset"` + Results []json.RawMessage `json:"results"` + SwitchPmText string `json:"switch_pm_text"` + SwitchPmParameter string `json:"switch_pm_parameter"` + } + + err := json.Unmarshal(data, &tmp) + if err != nil { + return err + } + + inlineQueryResults.InlineQueryId = tmp.InlineQueryId + inlineQueryResults.NextOffset = tmp.NextOffset + inlineQueryResults.SwitchPmText = tmp.SwitchPmText + inlineQueryResults.SwitchPmParameter = tmp.SwitchPmParameter + + fieldResults, _ := UnmarshalListOfInlineQueryResult(tmp.Results) + inlineQueryResults.Results = fieldResults + + return nil +} + // The payload for a general callback button type CallbackQueryPayloadData struct { meta @@ -21963,6 +22248,22 @@ func (*JsonValueArray) JsonValueType() string { return TypeJsonValueArray } +func (jsonValueArray *JsonValueArray) UnmarshalJSON(data []byte) error { + var tmp struct { + Values []json.RawMessage `json:"values"` + } + + err := json.Unmarshal(data, &tmp) + if err != nil { + return err + } + + fieldValues, _ := UnmarshalListOfJsonValue(tmp.Values) + jsonValueArray.Values = fieldValues + + return nil +} + // Represents a JSON object type JsonValueObject struct { meta @@ -22221,6 +22522,22 @@ func (*UserPrivacySettingRules) GetType() string { return TypeUserPrivacySettingRules } +func (userPrivacySettingRules *UserPrivacySettingRules) UnmarshalJSON(data []byte) error { + var tmp struct { + Rules []json.RawMessage `json:"rules"` + } + + err := json.Unmarshal(data, &tmp) + if err != nil { + return err + } + + fieldRules, _ := UnmarshalListOfUserPrivacySettingRule(tmp.Rules) + userPrivacySettingRules.Rules = fieldRules + + return nil +} + // A privacy setting for managing whether the user's online status is visible type UserPrivacySettingShowStatus struct { meta @@ -23658,6 +23975,25 @@ func (*NetworkStatistics) GetType() string { return TypeNetworkStatistics } +func (networkStatistics *NetworkStatistics) UnmarshalJSON(data []byte) error { + var tmp struct { + SinceDate int32 `json:"since_date"` + Entries []json.RawMessage `json:"entries"` + } + + err := json.Unmarshal(data, &tmp) + if err != nil { + return err + } + + networkStatistics.SinceDate = tmp.SinceDate + + fieldEntries, _ := UnmarshalListOfNetworkStatisticsEntry(tmp.Entries) + networkStatistics.Entries = fieldEntries + + return nil +} + // Contains auto-download settings type AutoDownloadSettings struct { meta @@ -27521,6 +27857,26 @@ func (*UpdateSuggestedActions) UpdateType() string { return TypeUpdateSuggestedActions } +func (updateSuggestedActions *UpdateSuggestedActions) UnmarshalJSON(data []byte) error { + var tmp struct { + AddedActions []json.RawMessage `json:"added_actions"` + RemovedActions []json.RawMessage `json:"removed_actions"` + } + + err := json.Unmarshal(data, &tmp) + if err != nil { + return err + } + + fieldAddedActions, _ := UnmarshalListOfSuggestedAction(tmp.AddedActions) + updateSuggestedActions.AddedActions = fieldAddedActions + + fieldRemovedActions, _ := UnmarshalListOfSuggestedAction(tmp.RemovedActions) + updateSuggestedActions.RemovedActions = fieldRemovedActions + + return nil +} + // A new incoming inline query; for bots only type UpdateNewInlineQuery struct { meta @@ -27926,6 +28282,22 @@ func (*Updates) GetType() string { return TypeUpdates } +func (updates *Updates) UnmarshalJSON(data []byte) error { + var tmp struct { + Updates []json.RawMessage `json:"updates"` + } + + err := json.Unmarshal(data, &tmp) + if err != nil { + return err + } + + fieldUpdates, _ := UnmarshalListOfUpdate(tmp.Updates) + updates.Updates = fieldUpdates + + return nil +} + // The log is written to stderr or an OS specific log type LogStreamDefault struct { meta diff --git a/client/unmarshaler.go b/client/unmarshaler.go index 2db3546..367bf89 100755 --- a/client/unmarshaler.go +++ b/client/unmarshaler.go @@ -33,6 +33,20 @@ func UnmarshalAuthenticationCodeType(data json.RawMessage) (AuthenticationCodeTy } } +func UnmarshalListOfAuthenticationCodeType(dataList []json.RawMessage) ([]AuthenticationCodeType, error) { + list := []AuthenticationCodeType{} + + for _, data := range dataList { + entity, err := UnmarshalAuthenticationCodeType(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalAuthorizationState(data json.RawMessage) (AuthorizationState, error) { var meta meta @@ -80,6 +94,20 @@ func UnmarshalAuthorizationState(data json.RawMessage) (AuthorizationState, erro } } +func UnmarshalListOfAuthorizationState(dataList []json.RawMessage) ([]AuthorizationState, error) { + list := []AuthorizationState{} + + for _, data := range dataList { + entity, err := UnmarshalAuthorizationState(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalInputFile(data json.RawMessage) (InputFile, error) { var meta meta @@ -106,6 +134,20 @@ func UnmarshalInputFile(data json.RawMessage) (InputFile, error) { } } +func UnmarshalListOfInputFile(dataList []json.RawMessage) ([]InputFile, error) { + list := []InputFile{} + + for _, data := range dataList { + entity, err := UnmarshalInputFile(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalThumbnailFormat(data json.RawMessage) (ThumbnailFormat, error) { var meta meta @@ -138,6 +180,20 @@ func UnmarshalThumbnailFormat(data json.RawMessage) (ThumbnailFormat, error) { } } +func UnmarshalListOfThumbnailFormat(dataList []json.RawMessage) ([]ThumbnailFormat, error) { + list := []ThumbnailFormat{} + + for _, data := range dataList { + entity, err := UnmarshalThumbnailFormat(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalMaskPoint(data json.RawMessage) (MaskPoint, error) { var meta meta @@ -164,6 +220,20 @@ func UnmarshalMaskPoint(data json.RawMessage) (MaskPoint, error) { } } +func UnmarshalListOfMaskPoint(dataList []json.RawMessage) ([]MaskPoint, error) { + list := []MaskPoint{} + + for _, data := range dataList { + entity, err := UnmarshalMaskPoint(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalPollType(data json.RawMessage) (PollType, error) { var meta meta @@ -184,6 +254,20 @@ func UnmarshalPollType(data json.RawMessage) (PollType, error) { } } +func UnmarshalListOfPollType(dataList []json.RawMessage) ([]PollType, error) { + list := []PollType{} + + for _, data := range dataList { + entity, err := UnmarshalPollType(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalUserType(data json.RawMessage) (UserType, error) { var meta meta @@ -210,6 +294,20 @@ func UnmarshalUserType(data json.RawMessage) (UserType, error) { } } +func UnmarshalListOfUserType(dataList []json.RawMessage) ([]UserType, error) { + list := []UserType{} + + for _, data := range dataList { + entity, err := UnmarshalUserType(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalInputChatPhoto(data json.RawMessage) (InputChatPhoto, error) { var meta meta @@ -233,6 +331,20 @@ func UnmarshalInputChatPhoto(data json.RawMessage) (InputChatPhoto, error) { } } +func UnmarshalListOfInputChatPhoto(dataList []json.RawMessage) ([]InputChatPhoto, error) { + list := []InputChatPhoto{} + + for _, data := range dataList { + entity, err := UnmarshalInputChatPhoto(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalChatMemberStatus(data json.RawMessage) (ChatMemberStatus, error) { var meta meta @@ -265,6 +377,20 @@ func UnmarshalChatMemberStatus(data json.RawMessage) (ChatMemberStatus, error) { } } +func UnmarshalListOfChatMemberStatus(dataList []json.RawMessage) ([]ChatMemberStatus, error) { + list := []ChatMemberStatus{} + + for _, data := range dataList { + entity, err := UnmarshalChatMemberStatus(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalChatMembersFilter(data json.RawMessage) (ChatMembersFilter, error) { var meta meta @@ -300,6 +426,20 @@ func UnmarshalChatMembersFilter(data json.RawMessage) (ChatMembersFilter, error) } } +func UnmarshalListOfChatMembersFilter(dataList []json.RawMessage) ([]ChatMembersFilter, error) { + list := []ChatMembersFilter{} + + for _, data := range dataList { + entity, err := UnmarshalChatMembersFilter(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalSupergroupMembersFilter(data json.RawMessage) (SupergroupMembersFilter, error) { var meta meta @@ -338,6 +478,20 @@ func UnmarshalSupergroupMembersFilter(data json.RawMessage) (SupergroupMembersFi } } +func UnmarshalListOfSupergroupMembersFilter(dataList []json.RawMessage) ([]SupergroupMembersFilter, error) { + list := []SupergroupMembersFilter{} + + for _, data := range dataList { + entity, err := UnmarshalSupergroupMembersFilter(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalSecretChatState(data json.RawMessage) (SecretChatState, error) { var meta meta @@ -361,6 +515,20 @@ func UnmarshalSecretChatState(data json.RawMessage) (SecretChatState, error) { } } +func UnmarshalListOfSecretChatState(dataList []json.RawMessage) ([]SecretChatState, error) { + list := []SecretChatState{} + + for _, data := range dataList { + entity, err := UnmarshalSecretChatState(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalMessageSender(data json.RawMessage) (MessageSender, error) { var meta meta @@ -381,6 +549,20 @@ func UnmarshalMessageSender(data json.RawMessage) (MessageSender, error) { } } +func UnmarshalListOfMessageSender(dataList []json.RawMessage) ([]MessageSender, error) { + list := []MessageSender{} + + for _, data := range dataList { + entity, err := UnmarshalMessageSender(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalMessageForwardOrigin(data json.RawMessage) (MessageForwardOrigin, error) { var meta meta @@ -407,6 +589,20 @@ func UnmarshalMessageForwardOrigin(data json.RawMessage) (MessageForwardOrigin, } } +func UnmarshalListOfMessageForwardOrigin(dataList []json.RawMessage) ([]MessageForwardOrigin, error) { + list := []MessageForwardOrigin{} + + for _, data := range dataList { + entity, err := UnmarshalMessageForwardOrigin(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalMessageSendingState(data json.RawMessage) (MessageSendingState, error) { var meta meta @@ -427,6 +623,20 @@ func UnmarshalMessageSendingState(data json.RawMessage) (MessageSendingState, er } } +func UnmarshalListOfMessageSendingState(dataList []json.RawMessage) ([]MessageSendingState, error) { + list := []MessageSendingState{} + + for _, data := range dataList { + entity, err := UnmarshalMessageSendingState(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalNotificationSettingsScope(data json.RawMessage) (NotificationSettingsScope, error) { var meta meta @@ -450,6 +660,20 @@ func UnmarshalNotificationSettingsScope(data json.RawMessage) (NotificationSetti } } +func UnmarshalListOfNotificationSettingsScope(dataList []json.RawMessage) ([]NotificationSettingsScope, error) { + list := []NotificationSettingsScope{} + + for _, data := range dataList { + entity, err := UnmarshalNotificationSettingsScope(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalChatType(data json.RawMessage) (ChatType, error) { var meta meta @@ -476,6 +700,20 @@ func UnmarshalChatType(data json.RawMessage) (ChatType, error) { } } +func UnmarshalListOfChatType(dataList []json.RawMessage) ([]ChatType, error) { + list := []ChatType{} + + for _, data := range dataList { + entity, err := UnmarshalChatType(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalChatList(data json.RawMessage) (ChatList, error) { var meta meta @@ -499,6 +737,20 @@ func UnmarshalChatList(data json.RawMessage) (ChatList, error) { } } +func UnmarshalListOfChatList(dataList []json.RawMessage) ([]ChatList, error) { + list := []ChatList{} + + for _, data := range dataList { + entity, err := UnmarshalChatList(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalChatSource(data json.RawMessage) (ChatSource, error) { var meta meta @@ -519,6 +771,20 @@ func UnmarshalChatSource(data json.RawMessage) (ChatSource, error) { } } +func UnmarshalListOfChatSource(dataList []json.RawMessage) ([]ChatSource, error) { + list := []ChatSource{} + + for _, data := range dataList { + entity, err := UnmarshalChatSource(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalPublicChatType(data json.RawMessage) (PublicChatType, error) { var meta meta @@ -539,6 +805,20 @@ func UnmarshalPublicChatType(data json.RawMessage) (PublicChatType, error) { } } +func UnmarshalListOfPublicChatType(dataList []json.RawMessage) ([]PublicChatType, error) { + list := []PublicChatType{} + + for _, data := range dataList { + entity, err := UnmarshalPublicChatType(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalChatActionBar(data json.RawMessage) (ChatActionBar, error) { var meta meta @@ -568,6 +848,20 @@ func UnmarshalChatActionBar(data json.RawMessage) (ChatActionBar, error) { } } +func UnmarshalListOfChatActionBar(dataList []json.RawMessage) ([]ChatActionBar, error) { + list := []ChatActionBar{} + + for _, data := range dataList { + entity, err := UnmarshalChatActionBar(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalKeyboardButtonType(data json.RawMessage) (KeyboardButtonType, error) { var meta meta @@ -594,6 +888,20 @@ func UnmarshalKeyboardButtonType(data json.RawMessage) (KeyboardButtonType, erro } } +func UnmarshalListOfKeyboardButtonType(dataList []json.RawMessage) ([]KeyboardButtonType, error) { + list := []KeyboardButtonType{} + + for _, data := range dataList { + entity, err := UnmarshalKeyboardButtonType(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalInlineKeyboardButtonType(data json.RawMessage) (InlineKeyboardButtonType, error) { var meta meta @@ -629,6 +937,20 @@ func UnmarshalInlineKeyboardButtonType(data json.RawMessage) (InlineKeyboardButt } } +func UnmarshalListOfInlineKeyboardButtonType(dataList []json.RawMessage) ([]InlineKeyboardButtonType, error) { + list := []InlineKeyboardButtonType{} + + for _, data := range dataList { + entity, err := UnmarshalInlineKeyboardButtonType(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalReplyMarkup(data json.RawMessage) (ReplyMarkup, error) { var meta meta @@ -655,6 +977,20 @@ func UnmarshalReplyMarkup(data json.RawMessage) (ReplyMarkup, error) { } } +func UnmarshalListOfReplyMarkup(dataList []json.RawMessage) ([]ReplyMarkup, error) { + list := []ReplyMarkup{} + + for _, data := range dataList { + entity, err := UnmarshalReplyMarkup(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalLoginUrlInfo(data json.RawMessage) (LoginUrlInfo, error) { var meta meta @@ -675,6 +1011,20 @@ func UnmarshalLoginUrlInfo(data json.RawMessage) (LoginUrlInfo, error) { } } +func UnmarshalListOfLoginUrlInfo(dataList []json.RawMessage) ([]LoginUrlInfo, error) { + list := []LoginUrlInfo{} + + for _, data := range dataList { + entity, err := UnmarshalLoginUrlInfo(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalRichText(data json.RawMessage) (RichText, error) { var meta meta @@ -740,6 +1090,20 @@ func UnmarshalRichText(data json.RawMessage) (RichText, error) { } } +func UnmarshalListOfRichText(dataList []json.RawMessage) ([]RichText, error) { + list := []RichText{} + + for _, data := range dataList { + entity, err := UnmarshalRichText(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalPageBlockHorizontalAlignment(data json.RawMessage) (PageBlockHorizontalAlignment, error) { var meta meta @@ -763,6 +1127,20 @@ func UnmarshalPageBlockHorizontalAlignment(data json.RawMessage) (PageBlockHoriz } } +func UnmarshalListOfPageBlockHorizontalAlignment(dataList []json.RawMessage) ([]PageBlockHorizontalAlignment, error) { + list := []PageBlockHorizontalAlignment{} + + for _, data := range dataList { + entity, err := UnmarshalPageBlockHorizontalAlignment(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalPageBlockVerticalAlignment(data json.RawMessage) (PageBlockVerticalAlignment, error) { var meta meta @@ -786,6 +1164,20 @@ func UnmarshalPageBlockVerticalAlignment(data json.RawMessage) (PageBlockVertica } } +func UnmarshalListOfPageBlockVerticalAlignment(dataList []json.RawMessage) ([]PageBlockVerticalAlignment, error) { + list := []PageBlockVerticalAlignment{} + + for _, data := range dataList { + entity, err := UnmarshalPageBlockVerticalAlignment(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalPageBlock(data json.RawMessage) (PageBlock, error) { var meta meta @@ -887,6 +1279,20 @@ func UnmarshalPageBlock(data json.RawMessage) (PageBlock, error) { } } +func UnmarshalListOfPageBlock(dataList []json.RawMessage) ([]PageBlock, error) { + list := []PageBlock{} + + for _, data := range dataList { + entity, err := UnmarshalPageBlock(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalInputCredentials(data json.RawMessage) (InputCredentials, error) { var meta meta @@ -913,6 +1319,20 @@ func UnmarshalInputCredentials(data json.RawMessage) (InputCredentials, error) { } } +func UnmarshalListOfInputCredentials(dataList []json.RawMessage) ([]InputCredentials, error) { + list := []InputCredentials{} + + for _, data := range dataList { + entity, err := UnmarshalInputCredentials(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalPassportElementType(data json.RawMessage) (PassportElementType, error) { var meta meta @@ -966,6 +1386,20 @@ func UnmarshalPassportElementType(data json.RawMessage) (PassportElementType, er } } +func UnmarshalListOfPassportElementType(dataList []json.RawMessage) ([]PassportElementType, error) { + list := []PassportElementType{} + + for _, data := range dataList { + entity, err := UnmarshalPassportElementType(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalPassportElement(data json.RawMessage) (PassportElement, error) { var meta meta @@ -1019,6 +1453,20 @@ func UnmarshalPassportElement(data json.RawMessage) (PassportElement, error) { } } +func UnmarshalListOfPassportElement(dataList []json.RawMessage) ([]PassportElement, error) { + list := []PassportElement{} + + for _, data := range dataList { + entity, err := UnmarshalPassportElement(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalInputPassportElement(data json.RawMessage) (InputPassportElement, error) { var meta meta @@ -1072,6 +1520,20 @@ func UnmarshalInputPassportElement(data json.RawMessage) (InputPassportElement, } } +func UnmarshalListOfInputPassportElement(dataList []json.RawMessage) ([]InputPassportElement, error) { + list := []InputPassportElement{} + + for _, data := range dataList { + entity, err := UnmarshalInputPassportElement(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalPassportElementErrorSource(data json.RawMessage) (PassportElementErrorSource, error) { var meta meta @@ -1113,6 +1575,20 @@ func UnmarshalPassportElementErrorSource(data json.RawMessage) (PassportElementE } } +func UnmarshalListOfPassportElementErrorSource(dataList []json.RawMessage) ([]PassportElementErrorSource, error) { + list := []PassportElementErrorSource{} + + for _, data := range dataList { + entity, err := UnmarshalPassportElementErrorSource(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalInputPassportElementErrorSource(data json.RawMessage) (InputPassportElementErrorSource, error) { var meta meta @@ -1154,6 +1630,20 @@ func UnmarshalInputPassportElementErrorSource(data json.RawMessage) (InputPasspo } } +func UnmarshalListOfInputPassportElementErrorSource(dataList []json.RawMessage) ([]InputPassportElementErrorSource, error) { + list := []InputPassportElementErrorSource{} + + for _, data := range dataList { + entity, err := UnmarshalInputPassportElementErrorSource(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalMessageContent(data json.RawMessage) (MessageContent, error) { var meta meta @@ -1294,6 +1784,20 @@ func UnmarshalMessageContent(data json.RawMessage) (MessageContent, error) { } } +func UnmarshalListOfMessageContent(dataList []json.RawMessage) ([]MessageContent, error) { + list := []MessageContent{} + + for _, data := range dataList { + entity, err := UnmarshalMessageContent(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalTextEntityType(data json.RawMessage) (TextEntityType, error) { var meta meta @@ -1359,6 +1863,20 @@ func UnmarshalTextEntityType(data json.RawMessage) (TextEntityType, error) { } } +func UnmarshalListOfTextEntityType(dataList []json.RawMessage) ([]TextEntityType, error) { + list := []TextEntityType{} + + for _, data := range dataList { + entity, err := UnmarshalTextEntityType(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalMessageSchedulingState(data json.RawMessage) (MessageSchedulingState, error) { var meta meta @@ -1379,6 +1897,20 @@ func UnmarshalMessageSchedulingState(data json.RawMessage) (MessageSchedulingSta } } +func UnmarshalListOfMessageSchedulingState(dataList []json.RawMessage) ([]MessageSchedulingState, error) { + list := []MessageSchedulingState{} + + for _, data := range dataList { + entity, err := UnmarshalMessageSchedulingState(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalInputMessageContent(data json.RawMessage) (InputMessageContent, error) { var meta meta @@ -1444,6 +1976,20 @@ func UnmarshalInputMessageContent(data json.RawMessage) (InputMessageContent, er } } +func UnmarshalListOfInputMessageContent(dataList []json.RawMessage) ([]InputMessageContent, error) { + list := []InputMessageContent{} + + for _, data := range dataList { + entity, err := UnmarshalInputMessageContent(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalSearchMessagesFilter(data json.RawMessage) (SearchMessagesFilter, error) { var meta meta @@ -1512,6 +2058,20 @@ func UnmarshalSearchMessagesFilter(data json.RawMessage) (SearchMessagesFilter, } } +func UnmarshalListOfSearchMessagesFilter(dataList []json.RawMessage) ([]SearchMessagesFilter, error) { + list := []SearchMessagesFilter{} + + for _, data := range dataList { + entity, err := UnmarshalSearchMessagesFilter(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalChatAction(data json.RawMessage) (ChatAction, error) { var meta meta @@ -1565,6 +2125,20 @@ func UnmarshalChatAction(data json.RawMessage) (ChatAction, error) { } } +func UnmarshalListOfChatAction(dataList []json.RawMessage) ([]ChatAction, error) { + list := []ChatAction{} + + for _, data := range dataList { + entity, err := UnmarshalChatAction(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalUserStatus(data json.RawMessage) (UserStatus, error) { var meta meta @@ -1597,6 +2171,20 @@ func UnmarshalUserStatus(data json.RawMessage) (UserStatus, error) { } } +func UnmarshalListOfUserStatus(dataList []json.RawMessage) ([]UserStatus, error) { + list := []UserStatus{} + + for _, data := range dataList { + entity, err := UnmarshalUserStatus(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalCallDiscardReason(data json.RawMessage) (CallDiscardReason, error) { var meta meta @@ -1626,6 +2214,20 @@ func UnmarshalCallDiscardReason(data json.RawMessage) (CallDiscardReason, error) } } +func UnmarshalListOfCallDiscardReason(dataList []json.RawMessage) ([]CallDiscardReason, error) { + list := []CallDiscardReason{} + + for _, data := range dataList { + entity, err := UnmarshalCallDiscardReason(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalCallServerType(data json.RawMessage) (CallServerType, error) { var meta meta @@ -1646,6 +2248,20 @@ func UnmarshalCallServerType(data json.RawMessage) (CallServerType, error) { } } +func UnmarshalListOfCallServerType(dataList []json.RawMessage) ([]CallServerType, error) { + list := []CallServerType{} + + for _, data := range dataList { + entity, err := UnmarshalCallServerType(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalCallState(data json.RawMessage) (CallState, error) { var meta meta @@ -1678,6 +2294,20 @@ func UnmarshalCallState(data json.RawMessage) (CallState, error) { } } +func UnmarshalListOfCallState(dataList []json.RawMessage) ([]CallState, error) { + list := []CallState{} + + for _, data := range dataList { + entity, err := UnmarshalCallState(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalCallProblem(data json.RawMessage) (CallProblem, error) { var meta meta @@ -1719,6 +2349,20 @@ func UnmarshalCallProblem(data json.RawMessage) (CallProblem, error) { } } +func UnmarshalListOfCallProblem(dataList []json.RawMessage) ([]CallProblem, error) { + list := []CallProblem{} + + for _, data := range dataList { + entity, err := UnmarshalCallProblem(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalDiceStickers(data json.RawMessage) (DiceStickers, error) { var meta meta @@ -1739,6 +2383,20 @@ func UnmarshalDiceStickers(data json.RawMessage) (DiceStickers, error) { } } +func UnmarshalListOfDiceStickers(dataList []json.RawMessage) ([]DiceStickers, error) { + list := []DiceStickers{} + + for _, data := range dataList { + entity, err := UnmarshalDiceStickers(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalInputInlineQueryResult(data json.RawMessage) (InputInlineQueryResult, error) { var meta meta @@ -1789,6 +2447,20 @@ func UnmarshalInputInlineQueryResult(data json.RawMessage) (InputInlineQueryResu } } +func UnmarshalListOfInputInlineQueryResult(dataList []json.RawMessage) ([]InputInlineQueryResult, error) { + list := []InputInlineQueryResult{} + + for _, data := range dataList { + entity, err := UnmarshalInputInlineQueryResult(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalInlineQueryResult(data json.RawMessage) (InlineQueryResult, error) { var meta meta @@ -1839,6 +2511,20 @@ func UnmarshalInlineQueryResult(data json.RawMessage) (InlineQueryResult, error) } } +func UnmarshalListOfInlineQueryResult(dataList []json.RawMessage) ([]InlineQueryResult, error) { + list := []InlineQueryResult{} + + for _, data := range dataList { + entity, err := UnmarshalInlineQueryResult(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalCallbackQueryPayload(data json.RawMessage) (CallbackQueryPayload, error) { var meta meta @@ -1862,6 +2548,20 @@ func UnmarshalCallbackQueryPayload(data json.RawMessage) (CallbackQueryPayload, } } +func UnmarshalListOfCallbackQueryPayload(dataList []json.RawMessage) ([]CallbackQueryPayload, error) { + list := []CallbackQueryPayload{} + + for _, data := range dataList { + entity, err := UnmarshalCallbackQueryPayload(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalChatEventAction(data json.RawMessage) (ChatEventAction, error) { var meta meta @@ -1942,6 +2642,20 @@ func UnmarshalChatEventAction(data json.RawMessage) (ChatEventAction, error) { } } +func UnmarshalListOfChatEventAction(dataList []json.RawMessage) ([]ChatEventAction, error) { + list := []ChatEventAction{} + + for _, data := range dataList { + entity, err := UnmarshalChatEventAction(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalLanguagePackStringValue(data json.RawMessage) (LanguagePackStringValue, error) { var meta meta @@ -1965,6 +2679,20 @@ func UnmarshalLanguagePackStringValue(data json.RawMessage) (LanguagePackStringV } } +func UnmarshalListOfLanguagePackStringValue(dataList []json.RawMessage) ([]LanguagePackStringValue, error) { + list := []LanguagePackStringValue{} + + for _, data := range dataList { + entity, err := UnmarshalLanguagePackStringValue(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalDeviceToken(data json.RawMessage) (DeviceToken, error) { var meta meta @@ -2012,6 +2740,20 @@ func UnmarshalDeviceToken(data json.RawMessage) (DeviceToken, error) { } } +func UnmarshalListOfDeviceToken(dataList []json.RawMessage) ([]DeviceToken, error) { + list := []DeviceToken{} + + for _, data := range dataList { + entity, err := UnmarshalDeviceToken(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalBackgroundFill(data json.RawMessage) (BackgroundFill, error) { var meta meta @@ -2032,6 +2774,20 @@ func UnmarshalBackgroundFill(data json.RawMessage) (BackgroundFill, error) { } } +func UnmarshalListOfBackgroundFill(dataList []json.RawMessage) ([]BackgroundFill, error) { + list := []BackgroundFill{} + + for _, data := range dataList { + entity, err := UnmarshalBackgroundFill(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalBackgroundType(data json.RawMessage) (BackgroundType, error) { var meta meta @@ -2055,6 +2811,20 @@ func UnmarshalBackgroundType(data json.RawMessage) (BackgroundType, error) { } } +func UnmarshalListOfBackgroundType(dataList []json.RawMessage) ([]BackgroundType, error) { + list := []BackgroundType{} + + for _, data := range dataList { + entity, err := UnmarshalBackgroundType(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalInputBackground(data json.RawMessage) (InputBackground, error) { var meta meta @@ -2075,6 +2845,20 @@ func UnmarshalInputBackground(data json.RawMessage) (InputBackground, error) { } } +func UnmarshalListOfInputBackground(dataList []json.RawMessage) ([]InputBackground, error) { + list := []InputBackground{} + + for _, data := range dataList { + entity, err := UnmarshalInputBackground(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalCanTransferOwnershipResult(data json.RawMessage) (CanTransferOwnershipResult, error) { var meta meta @@ -2101,6 +2885,20 @@ func UnmarshalCanTransferOwnershipResult(data json.RawMessage) (CanTransferOwner } } +func UnmarshalListOfCanTransferOwnershipResult(dataList []json.RawMessage) ([]CanTransferOwnershipResult, error) { + list := []CanTransferOwnershipResult{} + + for _, data := range dataList { + entity, err := UnmarshalCanTransferOwnershipResult(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalCheckChatUsernameResult(data json.RawMessage) (CheckChatUsernameResult, error) { var meta meta @@ -2130,6 +2928,20 @@ func UnmarshalCheckChatUsernameResult(data json.RawMessage) (CheckChatUsernameRe } } +func UnmarshalListOfCheckChatUsernameResult(dataList []json.RawMessage) ([]CheckChatUsernameResult, error) { + list := []CheckChatUsernameResult{} + + for _, data := range dataList { + entity, err := UnmarshalCheckChatUsernameResult(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalPushMessageContent(data json.RawMessage) (PushMessageContent, error) { var meta meta @@ -2222,6 +3034,20 @@ func UnmarshalPushMessageContent(data json.RawMessage) (PushMessageContent, erro } } +func UnmarshalListOfPushMessageContent(dataList []json.RawMessage) ([]PushMessageContent, error) { + list := []PushMessageContent{} + + for _, data := range dataList { + entity, err := UnmarshalPushMessageContent(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalNotificationType(data json.RawMessage) (NotificationType, error) { var meta meta @@ -2248,6 +3074,20 @@ func UnmarshalNotificationType(data json.RawMessage) (NotificationType, error) { } } +func UnmarshalListOfNotificationType(dataList []json.RawMessage) ([]NotificationType, error) { + list := []NotificationType{} + + for _, data := range dataList { + entity, err := UnmarshalNotificationType(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalNotificationGroupType(data json.RawMessage) (NotificationGroupType, error) { var meta meta @@ -2274,6 +3114,20 @@ func UnmarshalNotificationGroupType(data json.RawMessage) (NotificationGroupType } } +func UnmarshalListOfNotificationGroupType(dataList []json.RawMessage) ([]NotificationGroupType, error) { + list := []NotificationGroupType{} + + for _, data := range dataList { + entity, err := UnmarshalNotificationGroupType(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalOptionValue(data json.RawMessage) (OptionValue, error) { var meta meta @@ -2300,6 +3154,20 @@ func UnmarshalOptionValue(data json.RawMessage) (OptionValue, error) { } } +func UnmarshalListOfOptionValue(dataList []json.RawMessage) ([]OptionValue, error) { + list := []OptionValue{} + + for _, data := range dataList { + entity, err := UnmarshalOptionValue(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalJsonValue(data json.RawMessage) (JsonValue, error) { var meta meta @@ -2332,6 +3200,20 @@ func UnmarshalJsonValue(data json.RawMessage) (JsonValue, error) { } } +func UnmarshalListOfJsonValue(dataList []json.RawMessage) ([]JsonValue, error) { + list := []JsonValue{} + + for _, data := range dataList { + entity, err := UnmarshalJsonValue(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalUserPrivacySettingRule(data json.RawMessage) (UserPrivacySettingRule, error) { var meta meta @@ -2370,6 +3252,20 @@ func UnmarshalUserPrivacySettingRule(data json.RawMessage) (UserPrivacySettingRu } } +func UnmarshalListOfUserPrivacySettingRule(dataList []json.RawMessage) ([]UserPrivacySettingRule, error) { + list := []UserPrivacySettingRule{} + + for _, data := range dataList { + entity, err := UnmarshalUserPrivacySettingRule(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalUserPrivacySetting(data json.RawMessage) (UserPrivacySetting, error) { var meta meta @@ -2408,6 +3304,20 @@ func UnmarshalUserPrivacySetting(data json.RawMessage) (UserPrivacySetting, erro } } +func UnmarshalListOfUserPrivacySetting(dataList []json.RawMessage) ([]UserPrivacySetting, error) { + list := []UserPrivacySetting{} + + for _, data := range dataList { + entity, err := UnmarshalUserPrivacySetting(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalChatReportReason(data json.RawMessage) (ChatReportReason, error) { var meta meta @@ -2443,6 +3353,20 @@ func UnmarshalChatReportReason(data json.RawMessage) (ChatReportReason, error) { } } +func UnmarshalListOfChatReportReason(dataList []json.RawMessage) ([]ChatReportReason, error) { + list := []ChatReportReason{} + + for _, data := range dataList { + entity, err := UnmarshalChatReportReason(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalFileType(data json.RawMessage) (FileType, error) { var meta meta @@ -2505,6 +3429,20 @@ func UnmarshalFileType(data json.RawMessage) (FileType, error) { } } +func UnmarshalListOfFileType(dataList []json.RawMessage) ([]FileType, error) { + list := []FileType{} + + for _, data := range dataList { + entity, err := UnmarshalFileType(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalNetworkType(data json.RawMessage) (NetworkType, error) { var meta meta @@ -2534,6 +3472,20 @@ func UnmarshalNetworkType(data json.RawMessage) (NetworkType, error) { } } +func UnmarshalListOfNetworkType(dataList []json.RawMessage) ([]NetworkType, error) { + list := []NetworkType{} + + for _, data := range dataList { + entity, err := UnmarshalNetworkType(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalNetworkStatisticsEntry(data json.RawMessage) (NetworkStatisticsEntry, error) { var meta meta @@ -2554,6 +3506,20 @@ func UnmarshalNetworkStatisticsEntry(data json.RawMessage) (NetworkStatisticsEnt } } +func UnmarshalListOfNetworkStatisticsEntry(dataList []json.RawMessage) ([]NetworkStatisticsEntry, error) { + list := []NetworkStatisticsEntry{} + + for _, data := range dataList { + entity, err := UnmarshalNetworkStatisticsEntry(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalConnectionState(data json.RawMessage) (ConnectionState, error) { var meta meta @@ -2583,6 +3549,20 @@ func UnmarshalConnectionState(data json.RawMessage) (ConnectionState, error) { } } +func UnmarshalListOfConnectionState(dataList []json.RawMessage) ([]ConnectionState, error) { + list := []ConnectionState{} + + for _, data := range dataList { + entity, err := UnmarshalConnectionState(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalTopChatCategory(data json.RawMessage) (TopChatCategory, error) { var meta meta @@ -2618,6 +3598,20 @@ func UnmarshalTopChatCategory(data json.RawMessage) (TopChatCategory, error) { } } +func UnmarshalListOfTopChatCategory(dataList []json.RawMessage) ([]TopChatCategory, error) { + list := []TopChatCategory{} + + for _, data := range dataList { + entity, err := UnmarshalTopChatCategory(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalTMeUrlType(data json.RawMessage) (TMeUrlType, error) { var meta meta @@ -2644,6 +3638,20 @@ func UnmarshalTMeUrlType(data json.RawMessage) (TMeUrlType, error) { } } +func UnmarshalListOfTMeUrlType(dataList []json.RawMessage) ([]TMeUrlType, error) { + list := []TMeUrlType{} + + for _, data := range dataList { + entity, err := UnmarshalTMeUrlType(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalSuggestedAction(data json.RawMessage) (SuggestedAction, error) { var meta meta @@ -2664,6 +3672,20 @@ func UnmarshalSuggestedAction(data json.RawMessage) (SuggestedAction, error) { } } +func UnmarshalListOfSuggestedAction(dataList []json.RawMessage) ([]SuggestedAction, error) { + list := []SuggestedAction{} + + for _, data := range dataList { + entity, err := UnmarshalSuggestedAction(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalTextParseMode(data json.RawMessage) (TextParseMode, error) { var meta meta @@ -2684,6 +3706,20 @@ func UnmarshalTextParseMode(data json.RawMessage) (TextParseMode, error) { } } +func UnmarshalListOfTextParseMode(dataList []json.RawMessage) ([]TextParseMode, error) { + list := []TextParseMode{} + + for _, data := range dataList { + entity, err := UnmarshalTextParseMode(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalProxyType(data json.RawMessage) (ProxyType, error) { var meta meta @@ -2707,6 +3743,20 @@ func UnmarshalProxyType(data json.RawMessage) (ProxyType, error) { } } +func UnmarshalListOfProxyType(dataList []json.RawMessage) ([]ProxyType, error) { + list := []ProxyType{} + + for _, data := range dataList { + entity, err := UnmarshalProxyType(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalInputSticker(data json.RawMessage) (InputSticker, error) { var meta meta @@ -2727,6 +3777,20 @@ func UnmarshalInputSticker(data json.RawMessage) (InputSticker, error) { } } +func UnmarshalListOfInputSticker(dataList []json.RawMessage) ([]InputSticker, error) { + list := []InputSticker{} + + for _, data := range dataList { + entity, err := UnmarshalInputSticker(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalStatisticalGraph(data json.RawMessage) (StatisticalGraph, error) { var meta meta @@ -2750,6 +3814,20 @@ func UnmarshalStatisticalGraph(data json.RawMessage) (StatisticalGraph, error) { } } +func UnmarshalListOfStatisticalGraph(dataList []json.RawMessage) ([]StatisticalGraph, error) { + list := []StatisticalGraph{} + + for _, data := range dataList { + entity, err := UnmarshalStatisticalGraph(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalChatStatistics(data json.RawMessage) (ChatStatistics, error) { var meta meta @@ -2770,6 +3848,20 @@ func UnmarshalChatStatistics(data json.RawMessage) (ChatStatistics, error) { } } +func UnmarshalListOfChatStatistics(dataList []json.RawMessage) ([]ChatStatistics, error) { + list := []ChatStatistics{} + + for _, data := range dataList { + entity, err := UnmarshalChatStatistics(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalUpdate(data json.RawMessage) (Update, error) { var meta meta @@ -3024,6 +4116,20 @@ func UnmarshalUpdate(data json.RawMessage) (Update, error) { } } +func UnmarshalListOfUpdate(dataList []json.RawMessage) ([]Update, error) { + list := []Update{} + + for _, data := range dataList { + entity, err := UnmarshalUpdate(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalLogStream(data json.RawMessage) (LogStream, error) { var meta meta @@ -3047,6 +4153,20 @@ func UnmarshalLogStream(data json.RawMessage) (LogStream, error) { } } +func UnmarshalListOfLogStream(dataList []json.RawMessage) ([]LogStream, error) { + list := []LogStream{} + + for _, data := range dataList { + entity, err := UnmarshalLogStream(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + func UnmarshalError(data json.RawMessage) (*Error, error) { var resp Error diff --git a/codegen/tdlib.go b/codegen/tdlib.go index 389497c..f468ceb 100644 --- a/codegen/tdlib.go +++ b/codegen/tdlib.go @@ -285,10 +285,9 @@ func (entity *tdlibType) GetClass() *tlparser.Class { func (entity *tdlibType) HasClassProperties() bool { for _, prop := range entity.GetType().Properties { tdlibTypeProperty := TdlibTypeProperty(prop.Name, prop.Type, entity.schema) - if tdlibTypeProperty.IsClass() && !tdlibTypeProperty.IsList() { + if tdlibTypeProperty.IsClass() { return true } - } return false diff --git a/codegen/type.go b/codegen/type.go index bb1e116..9f8d0df 100644 --- a/codegen/type.go +++ b/codegen/type.go @@ -3,7 +3,6 @@ package codegen import ( "bytes" "fmt" - "github.com/zelenin/go-tdlib/tlparser" ) @@ -125,11 +124,15 @@ func (*%s) GetType() string { for _, property := range typ.Properties { tdlibTypeProperty := TdlibTypeProperty(property.Name, property.Type, schema) - if !tdlibTypeProperty.IsClass() || tdlibTypeProperty.IsList() { + if !tdlibTypeProperty.IsClass() { buf.WriteString(fmt.Sprintf(" %s %s `json:\"%s\"`\n", tdlibTypeProperty.ToGoName(), tdlibTypeProperty.ToGoType(), property.Name)) countSimpleProperties++ } else { - buf.WriteString(fmt.Sprintf(" %s %s `json:\"%s\"`\n", tdlibTypeProperty.ToGoName(), "json.RawMessage", property.Name)) + if tdlibTypeProperty.IsList() { + buf.WriteString(fmt.Sprintf(" %s %s `json:\"%s\"`\n", tdlibTypeProperty.ToGoName(), "[]json.RawMessage", property.Name)) + } else { + buf.WriteString(fmt.Sprintf(" %s %s `json:\"%s\"`\n", tdlibTypeProperty.ToGoName(), "json.RawMessage", property.Name)) + } } } @@ -145,7 +148,7 @@ func (*%s) GetType() string { for _, property := range typ.Properties { tdlibTypeProperty := TdlibTypeProperty(property.Name, property.Type, schema) - if !tdlibTypeProperty.IsClass() || tdlibTypeProperty.IsList() { + if !tdlibTypeProperty.IsClass() { buf.WriteString(fmt.Sprintf(" %s.%s = tmp.%s\n", typ.Name, tdlibTypeProperty.ToGoName(), tdlibTypeProperty.ToGoName())) } } @@ -163,6 +166,12 @@ func (*%s) GetType() string { `, tdlibTypeProperty.ToGoName(), tdlibTypeProperty.ToGoType(), tdlibTypeProperty.ToGoName(), typ.Name, tdlibTypeProperty.ToGoName(), tdlibTypeProperty.ToGoName())) } + if tdlibTypeProperty.IsClass() && tdlibTypeProperty.IsList() { + buf.WriteString(fmt.Sprintf(` field%s, _ := UnmarshalListOf%s(tmp.%s) + %s.%s = field%s + +`, tdlibTypeProperty.ToGoName(), tdlibTypeProperty.GetClass().ToGoType(), tdlibTypeProperty.ToGoName(), typ.Name, tdlibTypeProperty.ToGoName(), tdlibTypeProperty.ToGoName())) + } } buf.WriteString(` return nil diff --git a/codegen/unmarshaler.go b/codegen/unmarshaler.go index cdee083..6da4db0 100644 --- a/codegen/unmarshaler.go +++ b/codegen/unmarshaler.go @@ -46,6 +46,23 @@ func GenerateUnmarshalers(schema *tlparser.Schema, packageName string) []byte { } `) + + buf.WriteString(fmt.Sprintf(`func UnmarshalListOf%s(dataList []json.RawMessage) ([]%s, error) { + list := []%s{} + + for _, data := range dataList { + entity, err := Unmarshal%s(data) + if err != nil { + return nil, err + } + list = append(list, entity) + } + + return list, nil +} + +`, tdlibClass.ToGoType(), tdlibClass.ToGoType(), tdlibClass.ToGoType(), tdlibClass.ToGoType())) + } for _, typ := range schema.Types {