7a04f298d2
- update to latest telegram layer - remove some references to fields in tg.Entities that don't exist in the schema - originally added here: https://github.com/beeper/td/commit/820929062a2ba0104397bc01235ab58a9cff780e - referenced here - https://github.com/mautrix/telegramgo/commit/124f0967ed195b5a380c9bd02e170ada9710dde3 - https://github.com/mautrix/telegramgo/commit/4205047aab2e0639217148b5d125bfaab668bd8e
1211 lines
33 KiB
Go
Generated
1211 lines
33 KiB
Go
Generated
// Code generated by gotdgen, DO NOT EDIT.
|
|
|
|
package tg
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"fmt"
|
|
"sort"
|
|
"strings"
|
|
|
|
"go.uber.org/multierr"
|
|
|
|
"go.mau.fi/mautrix-telegram/pkg/gotd/bin"
|
|
"go.mau.fi/mautrix-telegram/pkg/gotd/tdjson"
|
|
"go.mau.fi/mautrix-telegram/pkg/gotd/tdp"
|
|
"go.mau.fi/mautrix-telegram/pkg/gotd/tgerr"
|
|
)
|
|
|
|
// No-op definition for keeping imports.
|
|
var (
|
|
_ = bin.Buffer{}
|
|
_ = context.Background()
|
|
_ = fmt.Stringer(nil)
|
|
_ = strings.Builder{}
|
|
_ = errors.Is
|
|
_ = multierr.AppendInto
|
|
_ = sort.Ints
|
|
_ = tdp.Format
|
|
_ = tgerr.Error{}
|
|
_ = tdjson.Encoder{}
|
|
)
|
|
|
|
// UpdatesDifferenceEmpty represents TL type `updates.differenceEmpty#5d75a138`.
|
|
// No events.
|
|
//
|
|
// See https://core.telegram.org/constructor/updates.differenceEmpty for reference.
|
|
type UpdatesDifferenceEmpty struct {
|
|
// Current date
|
|
Date int
|
|
// Number of sent updates
|
|
Seq int
|
|
}
|
|
|
|
// UpdatesDifferenceEmptyTypeID is TL type id of UpdatesDifferenceEmpty.
|
|
const UpdatesDifferenceEmptyTypeID = 0x5d75a138
|
|
|
|
// construct implements constructor of UpdatesDifferenceClass.
|
|
func (d UpdatesDifferenceEmpty) construct() UpdatesDifferenceClass { return &d }
|
|
|
|
// Ensuring interfaces in compile-time for UpdatesDifferenceEmpty.
|
|
var (
|
|
_ bin.Encoder = &UpdatesDifferenceEmpty{}
|
|
_ bin.Decoder = &UpdatesDifferenceEmpty{}
|
|
_ bin.BareEncoder = &UpdatesDifferenceEmpty{}
|
|
_ bin.BareDecoder = &UpdatesDifferenceEmpty{}
|
|
|
|
_ UpdatesDifferenceClass = &UpdatesDifferenceEmpty{}
|
|
)
|
|
|
|
func (d *UpdatesDifferenceEmpty) Zero() bool {
|
|
if d == nil {
|
|
return true
|
|
}
|
|
if !(d.Date == 0) {
|
|
return false
|
|
}
|
|
if !(d.Seq == 0) {
|
|
return false
|
|
}
|
|
|
|
return true
|
|
}
|
|
|
|
// String implements fmt.Stringer.
|
|
func (d *UpdatesDifferenceEmpty) String() string {
|
|
if d == nil {
|
|
return "UpdatesDifferenceEmpty(nil)"
|
|
}
|
|
type Alias UpdatesDifferenceEmpty
|
|
return fmt.Sprintf("UpdatesDifferenceEmpty%+v", Alias(*d))
|
|
}
|
|
|
|
// FillFrom fills UpdatesDifferenceEmpty from given interface.
|
|
func (d *UpdatesDifferenceEmpty) FillFrom(from interface {
|
|
GetDate() (value int)
|
|
GetSeq() (value int)
|
|
}) {
|
|
d.Date = from.GetDate()
|
|
d.Seq = from.GetSeq()
|
|
}
|
|
|
|
// TypeID returns type id in TL schema.
|
|
//
|
|
// See https://core.telegram.org/mtproto/TL-tl#remarks.
|
|
func (*UpdatesDifferenceEmpty) TypeID() uint32 {
|
|
return UpdatesDifferenceEmptyTypeID
|
|
}
|
|
|
|
// TypeName returns name of type in TL schema.
|
|
func (*UpdatesDifferenceEmpty) TypeName() string {
|
|
return "updates.differenceEmpty"
|
|
}
|
|
|
|
// TypeInfo returns info about TL type.
|
|
func (d *UpdatesDifferenceEmpty) TypeInfo() tdp.Type {
|
|
typ := tdp.Type{
|
|
Name: "updates.differenceEmpty",
|
|
ID: UpdatesDifferenceEmptyTypeID,
|
|
}
|
|
if d == nil {
|
|
typ.Null = true
|
|
return typ
|
|
}
|
|
typ.Fields = []tdp.Field{
|
|
{
|
|
Name: "Date",
|
|
SchemaName: "date",
|
|
},
|
|
{
|
|
Name: "Seq",
|
|
SchemaName: "seq",
|
|
},
|
|
}
|
|
return typ
|
|
}
|
|
|
|
// Encode implements bin.Encoder.
|
|
func (d *UpdatesDifferenceEmpty) Encode(b *bin.Buffer) error {
|
|
if d == nil {
|
|
return fmt.Errorf("can't encode updates.differenceEmpty#5d75a138 as nil")
|
|
}
|
|
b.PutID(UpdatesDifferenceEmptyTypeID)
|
|
return d.EncodeBare(b)
|
|
}
|
|
|
|
// EncodeBare implements bin.BareEncoder.
|
|
func (d *UpdatesDifferenceEmpty) EncodeBare(b *bin.Buffer) error {
|
|
if d == nil {
|
|
return fmt.Errorf("can't encode updates.differenceEmpty#5d75a138 as nil")
|
|
}
|
|
b.PutInt(d.Date)
|
|
b.PutInt(d.Seq)
|
|
return nil
|
|
}
|
|
|
|
// Decode implements bin.Decoder.
|
|
func (d *UpdatesDifferenceEmpty) Decode(b *bin.Buffer) error {
|
|
if d == nil {
|
|
return fmt.Errorf("can't decode updates.differenceEmpty#5d75a138 to nil")
|
|
}
|
|
if err := b.ConsumeID(UpdatesDifferenceEmptyTypeID); err != nil {
|
|
return fmt.Errorf("unable to decode updates.differenceEmpty#5d75a138: %w", err)
|
|
}
|
|
return d.DecodeBare(b)
|
|
}
|
|
|
|
// DecodeBare implements bin.BareDecoder.
|
|
func (d *UpdatesDifferenceEmpty) DecodeBare(b *bin.Buffer) error {
|
|
if d == nil {
|
|
return fmt.Errorf("can't decode updates.differenceEmpty#5d75a138 to nil")
|
|
}
|
|
{
|
|
value, err := b.Int()
|
|
if err != nil {
|
|
return fmt.Errorf("unable to decode updates.differenceEmpty#5d75a138: field date: %w", err)
|
|
}
|
|
d.Date = value
|
|
}
|
|
{
|
|
value, err := b.Int()
|
|
if err != nil {
|
|
return fmt.Errorf("unable to decode updates.differenceEmpty#5d75a138: field seq: %w", err)
|
|
}
|
|
d.Seq = value
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// GetDate returns value of Date field.
|
|
func (d *UpdatesDifferenceEmpty) GetDate() (value int) {
|
|
if d == nil {
|
|
return
|
|
}
|
|
return d.Date
|
|
}
|
|
|
|
// GetSeq returns value of Seq field.
|
|
func (d *UpdatesDifferenceEmpty) GetSeq() (value int) {
|
|
if d == nil {
|
|
return
|
|
}
|
|
return d.Seq
|
|
}
|
|
|
|
// UpdatesDifference represents TL type `updates.difference#f49ca0`.
|
|
// Full list of occurred events.
|
|
//
|
|
// See https://core.telegram.org/constructor/updates.difference for reference.
|
|
type UpdatesDifference struct {
|
|
// List of new messages
|
|
NewMessages []MessageClass
|
|
// List of new encrypted secret chat messages
|
|
NewEncryptedMessages []EncryptedMessageClass
|
|
// List of updates
|
|
OtherUpdates []UpdateClass
|
|
// List of chats mentioned in events
|
|
Chats []ChatClass
|
|
// List of users mentioned in events
|
|
Users []UserClass
|
|
// Current state
|
|
State UpdatesState
|
|
}
|
|
|
|
// UpdatesDifferenceTypeID is TL type id of UpdatesDifference.
|
|
const UpdatesDifferenceTypeID = 0xf49ca0
|
|
|
|
// construct implements constructor of UpdatesDifferenceClass.
|
|
func (d UpdatesDifference) construct() UpdatesDifferenceClass { return &d }
|
|
|
|
// Ensuring interfaces in compile-time for UpdatesDifference.
|
|
var (
|
|
_ bin.Encoder = &UpdatesDifference{}
|
|
_ bin.Decoder = &UpdatesDifference{}
|
|
_ bin.BareEncoder = &UpdatesDifference{}
|
|
_ bin.BareDecoder = &UpdatesDifference{}
|
|
|
|
_ UpdatesDifferenceClass = &UpdatesDifference{}
|
|
)
|
|
|
|
func (d *UpdatesDifference) Zero() bool {
|
|
if d == nil {
|
|
return true
|
|
}
|
|
if !(d.NewMessages == nil) {
|
|
return false
|
|
}
|
|
if !(d.NewEncryptedMessages == nil) {
|
|
return false
|
|
}
|
|
if !(d.OtherUpdates == nil) {
|
|
return false
|
|
}
|
|
if !(d.Chats == nil) {
|
|
return false
|
|
}
|
|
if !(d.Users == nil) {
|
|
return false
|
|
}
|
|
if !(d.State.Zero()) {
|
|
return false
|
|
}
|
|
|
|
return true
|
|
}
|
|
|
|
// String implements fmt.Stringer.
|
|
func (d *UpdatesDifference) String() string {
|
|
if d == nil {
|
|
return "UpdatesDifference(nil)"
|
|
}
|
|
type Alias UpdatesDifference
|
|
return fmt.Sprintf("UpdatesDifference%+v", Alias(*d))
|
|
}
|
|
|
|
// FillFrom fills UpdatesDifference from given interface.
|
|
func (d *UpdatesDifference) FillFrom(from interface {
|
|
GetNewMessages() (value []MessageClass)
|
|
GetNewEncryptedMessages() (value []EncryptedMessageClass)
|
|
GetOtherUpdates() (value []UpdateClass)
|
|
GetChats() (value []ChatClass)
|
|
GetUsers() (value []UserClass)
|
|
GetState() (value UpdatesState)
|
|
}) {
|
|
d.NewMessages = from.GetNewMessages()
|
|
d.NewEncryptedMessages = from.GetNewEncryptedMessages()
|
|
d.OtherUpdates = from.GetOtherUpdates()
|
|
d.Chats = from.GetChats()
|
|
d.Users = from.GetUsers()
|
|
d.State = from.GetState()
|
|
}
|
|
|
|
// TypeID returns type id in TL schema.
|
|
//
|
|
// See https://core.telegram.org/mtproto/TL-tl#remarks.
|
|
func (*UpdatesDifference) TypeID() uint32 {
|
|
return UpdatesDifferenceTypeID
|
|
}
|
|
|
|
// TypeName returns name of type in TL schema.
|
|
func (*UpdatesDifference) TypeName() string {
|
|
return "updates.difference"
|
|
}
|
|
|
|
// TypeInfo returns info about TL type.
|
|
func (d *UpdatesDifference) TypeInfo() tdp.Type {
|
|
typ := tdp.Type{
|
|
Name: "updates.difference",
|
|
ID: UpdatesDifferenceTypeID,
|
|
}
|
|
if d == nil {
|
|
typ.Null = true
|
|
return typ
|
|
}
|
|
typ.Fields = []tdp.Field{
|
|
{
|
|
Name: "NewMessages",
|
|
SchemaName: "new_messages",
|
|
},
|
|
{
|
|
Name: "NewEncryptedMessages",
|
|
SchemaName: "new_encrypted_messages",
|
|
},
|
|
{
|
|
Name: "OtherUpdates",
|
|
SchemaName: "other_updates",
|
|
},
|
|
{
|
|
Name: "Chats",
|
|
SchemaName: "chats",
|
|
},
|
|
{
|
|
Name: "Users",
|
|
SchemaName: "users",
|
|
},
|
|
{
|
|
Name: "State",
|
|
SchemaName: "state",
|
|
},
|
|
}
|
|
return typ
|
|
}
|
|
|
|
// Encode implements bin.Encoder.
|
|
func (d *UpdatesDifference) Encode(b *bin.Buffer) error {
|
|
if d == nil {
|
|
return fmt.Errorf("can't encode updates.difference#f49ca0 as nil")
|
|
}
|
|
b.PutID(UpdatesDifferenceTypeID)
|
|
return d.EncodeBare(b)
|
|
}
|
|
|
|
// EncodeBare implements bin.BareEncoder.
|
|
func (d *UpdatesDifference) EncodeBare(b *bin.Buffer) error {
|
|
if d == nil {
|
|
return fmt.Errorf("can't encode updates.difference#f49ca0 as nil")
|
|
}
|
|
b.PutVectorHeader(len(d.NewMessages))
|
|
for idx, v := range d.NewMessages {
|
|
if v == nil {
|
|
return fmt.Errorf("unable to encode updates.difference#f49ca0: field new_messages element with index %d is nil", idx)
|
|
}
|
|
if err := v.Encode(b); err != nil {
|
|
return fmt.Errorf("unable to encode updates.difference#f49ca0: field new_messages element with index %d: %w", idx, err)
|
|
}
|
|
}
|
|
b.PutVectorHeader(len(d.NewEncryptedMessages))
|
|
for idx, v := range d.NewEncryptedMessages {
|
|
if v == nil {
|
|
return fmt.Errorf("unable to encode updates.difference#f49ca0: field new_encrypted_messages element with index %d is nil", idx)
|
|
}
|
|
if err := v.Encode(b); err != nil {
|
|
return fmt.Errorf("unable to encode updates.difference#f49ca0: field new_encrypted_messages element with index %d: %w", idx, err)
|
|
}
|
|
}
|
|
b.PutVectorHeader(len(d.OtherUpdates))
|
|
for idx, v := range d.OtherUpdates {
|
|
if v == nil {
|
|
return fmt.Errorf("unable to encode updates.difference#f49ca0: field other_updates element with index %d is nil", idx)
|
|
}
|
|
if err := v.Encode(b); err != nil {
|
|
return fmt.Errorf("unable to encode updates.difference#f49ca0: field other_updates element with index %d: %w", idx, err)
|
|
}
|
|
}
|
|
b.PutVectorHeader(len(d.Chats))
|
|
for idx, v := range d.Chats {
|
|
if v == nil {
|
|
return fmt.Errorf("unable to encode updates.difference#f49ca0: field chats element with index %d is nil", idx)
|
|
}
|
|
if err := v.Encode(b); err != nil {
|
|
return fmt.Errorf("unable to encode updates.difference#f49ca0: field chats element with index %d: %w", idx, err)
|
|
}
|
|
}
|
|
b.PutVectorHeader(len(d.Users))
|
|
for idx, v := range d.Users {
|
|
if v == nil {
|
|
return fmt.Errorf("unable to encode updates.difference#f49ca0: field users element with index %d is nil", idx)
|
|
}
|
|
if err := v.Encode(b); err != nil {
|
|
return fmt.Errorf("unable to encode updates.difference#f49ca0: field users element with index %d: %w", idx, err)
|
|
}
|
|
}
|
|
if err := d.State.Encode(b); err != nil {
|
|
return fmt.Errorf("unable to encode updates.difference#f49ca0: field state: %w", err)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// Decode implements bin.Decoder.
|
|
func (d *UpdatesDifference) Decode(b *bin.Buffer) error {
|
|
if d == nil {
|
|
return fmt.Errorf("can't decode updates.difference#f49ca0 to nil")
|
|
}
|
|
if err := b.ConsumeID(UpdatesDifferenceTypeID); err != nil {
|
|
return fmt.Errorf("unable to decode updates.difference#f49ca0: %w", err)
|
|
}
|
|
return d.DecodeBare(b)
|
|
}
|
|
|
|
// DecodeBare implements bin.BareDecoder.
|
|
func (d *UpdatesDifference) DecodeBare(b *bin.Buffer) error {
|
|
if d == nil {
|
|
return fmt.Errorf("can't decode updates.difference#f49ca0 to nil")
|
|
}
|
|
{
|
|
headerLen, err := b.VectorHeader()
|
|
if err != nil {
|
|
return fmt.Errorf("unable to decode updates.difference#f49ca0: field new_messages: %w", err)
|
|
}
|
|
|
|
if headerLen > 0 {
|
|
d.NewMessages = make([]MessageClass, 0, headerLen%bin.PreallocateLimit)
|
|
}
|
|
for idx := 0; idx < headerLen; idx++ {
|
|
value, err := DecodeMessage(b)
|
|
if err != nil {
|
|
return fmt.Errorf("unable to decode updates.difference#f49ca0: field new_messages: %w", err)
|
|
}
|
|
d.NewMessages = append(d.NewMessages, value)
|
|
}
|
|
}
|
|
{
|
|
headerLen, err := b.VectorHeader()
|
|
if err != nil {
|
|
return fmt.Errorf("unable to decode updates.difference#f49ca0: field new_encrypted_messages: %w", err)
|
|
}
|
|
|
|
if headerLen > 0 {
|
|
d.NewEncryptedMessages = make([]EncryptedMessageClass, 0, headerLen%bin.PreallocateLimit)
|
|
}
|
|
for idx := 0; idx < headerLen; idx++ {
|
|
value, err := DecodeEncryptedMessage(b)
|
|
if err != nil {
|
|
return fmt.Errorf("unable to decode updates.difference#f49ca0: field new_encrypted_messages: %w", err)
|
|
}
|
|
d.NewEncryptedMessages = append(d.NewEncryptedMessages, value)
|
|
}
|
|
}
|
|
{
|
|
headerLen, err := b.VectorHeader()
|
|
if err != nil {
|
|
return fmt.Errorf("unable to decode updates.difference#f49ca0: field other_updates: %w", err)
|
|
}
|
|
|
|
if headerLen > 0 {
|
|
d.OtherUpdates = make([]UpdateClass, 0, headerLen%bin.PreallocateLimit)
|
|
}
|
|
for idx := 0; idx < headerLen; idx++ {
|
|
value, err := DecodeUpdate(b)
|
|
if err != nil {
|
|
return fmt.Errorf("unable to decode updates.difference#f49ca0: field other_updates: %w", err)
|
|
}
|
|
d.OtherUpdates = append(d.OtherUpdates, value)
|
|
}
|
|
}
|
|
{
|
|
headerLen, err := b.VectorHeader()
|
|
if err != nil {
|
|
return fmt.Errorf("unable to decode updates.difference#f49ca0: field chats: %w", err)
|
|
}
|
|
|
|
if headerLen > 0 {
|
|
d.Chats = make([]ChatClass, 0, headerLen%bin.PreallocateLimit)
|
|
}
|
|
for idx := 0; idx < headerLen; idx++ {
|
|
value, err := DecodeChat(b)
|
|
if err != nil {
|
|
return fmt.Errorf("unable to decode updates.difference#f49ca0: field chats: %w", err)
|
|
}
|
|
d.Chats = append(d.Chats, value)
|
|
}
|
|
}
|
|
{
|
|
headerLen, err := b.VectorHeader()
|
|
if err != nil {
|
|
return fmt.Errorf("unable to decode updates.difference#f49ca0: field users: %w", err)
|
|
}
|
|
|
|
if headerLen > 0 {
|
|
d.Users = make([]UserClass, 0, headerLen%bin.PreallocateLimit)
|
|
}
|
|
for idx := 0; idx < headerLen; idx++ {
|
|
value, err := DecodeUser(b)
|
|
if err != nil {
|
|
return fmt.Errorf("unable to decode updates.difference#f49ca0: field users: %w", err)
|
|
}
|
|
d.Users = append(d.Users, value)
|
|
}
|
|
}
|
|
{
|
|
if err := d.State.Decode(b); err != nil {
|
|
return fmt.Errorf("unable to decode updates.difference#f49ca0: field state: %w", err)
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// GetNewMessages returns value of NewMessages field.
|
|
func (d *UpdatesDifference) GetNewMessages() (value []MessageClass) {
|
|
if d == nil {
|
|
return
|
|
}
|
|
return d.NewMessages
|
|
}
|
|
|
|
// GetNewEncryptedMessages returns value of NewEncryptedMessages field.
|
|
func (d *UpdatesDifference) GetNewEncryptedMessages() (value []EncryptedMessageClass) {
|
|
if d == nil {
|
|
return
|
|
}
|
|
return d.NewEncryptedMessages
|
|
}
|
|
|
|
// GetOtherUpdates returns value of OtherUpdates field.
|
|
func (d *UpdatesDifference) GetOtherUpdates() (value []UpdateClass) {
|
|
if d == nil {
|
|
return
|
|
}
|
|
return d.OtherUpdates
|
|
}
|
|
|
|
// GetChats returns value of Chats field.
|
|
func (d *UpdatesDifference) GetChats() (value []ChatClass) {
|
|
if d == nil {
|
|
return
|
|
}
|
|
return d.Chats
|
|
}
|
|
|
|
// GetUsers returns value of Users field.
|
|
func (d *UpdatesDifference) GetUsers() (value []UserClass) {
|
|
if d == nil {
|
|
return
|
|
}
|
|
return d.Users
|
|
}
|
|
|
|
// GetState returns value of State field.
|
|
func (d *UpdatesDifference) GetState() (value UpdatesState) {
|
|
if d == nil {
|
|
return
|
|
}
|
|
return d.State
|
|
}
|
|
|
|
// MapNewMessages returns field NewMessages wrapped in MessageClassArray helper.
|
|
func (d *UpdatesDifference) MapNewMessages() (value MessageClassArray) {
|
|
return MessageClassArray(d.NewMessages)
|
|
}
|
|
|
|
// MapNewEncryptedMessages returns field NewEncryptedMessages wrapped in EncryptedMessageClassArray helper.
|
|
func (d *UpdatesDifference) MapNewEncryptedMessages() (value EncryptedMessageClassArray) {
|
|
return EncryptedMessageClassArray(d.NewEncryptedMessages)
|
|
}
|
|
|
|
// MapOtherUpdates returns field OtherUpdates wrapped in UpdateClassArray helper.
|
|
func (d *UpdatesDifference) MapOtherUpdates() (value UpdateClassArray) {
|
|
return UpdateClassArray(d.OtherUpdates)
|
|
}
|
|
|
|
// MapChats returns field Chats wrapped in ChatClassArray helper.
|
|
func (d *UpdatesDifference) MapChats() (value ChatClassArray) {
|
|
return ChatClassArray(d.Chats)
|
|
}
|
|
|
|
// MapUsers returns field Users wrapped in UserClassArray helper.
|
|
func (d *UpdatesDifference) MapUsers() (value UserClassArray) {
|
|
return UserClassArray(d.Users)
|
|
}
|
|
|
|
// UpdatesDifferenceSlice represents TL type `updates.differenceSlice#a8fb1981`.
|
|
// Incomplete list of occurred events.
|
|
//
|
|
// See https://core.telegram.org/constructor/updates.differenceSlice for reference.
|
|
type UpdatesDifferenceSlice struct {
|
|
// List of new messages
|
|
NewMessages []MessageClass
|
|
// New messages from the encrypted event sequence¹
|
|
//
|
|
// Links:
|
|
// 1) https://core.telegram.org/api/updates
|
|
NewEncryptedMessages []EncryptedMessageClass
|
|
// List of updates
|
|
OtherUpdates []UpdateClass
|
|
// List of chats mentioned in events
|
|
Chats []ChatClass
|
|
// List of users mentioned in events
|
|
Users []UserClass
|
|
// Intermediary state
|
|
IntermediateState UpdatesState
|
|
}
|
|
|
|
// UpdatesDifferenceSliceTypeID is TL type id of UpdatesDifferenceSlice.
|
|
const UpdatesDifferenceSliceTypeID = 0xa8fb1981
|
|
|
|
// construct implements constructor of UpdatesDifferenceClass.
|
|
func (d UpdatesDifferenceSlice) construct() UpdatesDifferenceClass { return &d }
|
|
|
|
// Ensuring interfaces in compile-time for UpdatesDifferenceSlice.
|
|
var (
|
|
_ bin.Encoder = &UpdatesDifferenceSlice{}
|
|
_ bin.Decoder = &UpdatesDifferenceSlice{}
|
|
_ bin.BareEncoder = &UpdatesDifferenceSlice{}
|
|
_ bin.BareDecoder = &UpdatesDifferenceSlice{}
|
|
|
|
_ UpdatesDifferenceClass = &UpdatesDifferenceSlice{}
|
|
)
|
|
|
|
func (d *UpdatesDifferenceSlice) Zero() bool {
|
|
if d == nil {
|
|
return true
|
|
}
|
|
if !(d.NewMessages == nil) {
|
|
return false
|
|
}
|
|
if !(d.NewEncryptedMessages == nil) {
|
|
return false
|
|
}
|
|
if !(d.OtherUpdates == nil) {
|
|
return false
|
|
}
|
|
if !(d.Chats == nil) {
|
|
return false
|
|
}
|
|
if !(d.Users == nil) {
|
|
return false
|
|
}
|
|
if !(d.IntermediateState.Zero()) {
|
|
return false
|
|
}
|
|
|
|
return true
|
|
}
|
|
|
|
// String implements fmt.Stringer.
|
|
func (d *UpdatesDifferenceSlice) String() string {
|
|
if d == nil {
|
|
return "UpdatesDifferenceSlice(nil)"
|
|
}
|
|
type Alias UpdatesDifferenceSlice
|
|
return fmt.Sprintf("UpdatesDifferenceSlice%+v", Alias(*d))
|
|
}
|
|
|
|
// FillFrom fills UpdatesDifferenceSlice from given interface.
|
|
func (d *UpdatesDifferenceSlice) FillFrom(from interface {
|
|
GetNewMessages() (value []MessageClass)
|
|
GetNewEncryptedMessages() (value []EncryptedMessageClass)
|
|
GetOtherUpdates() (value []UpdateClass)
|
|
GetChats() (value []ChatClass)
|
|
GetUsers() (value []UserClass)
|
|
GetIntermediateState() (value UpdatesState)
|
|
}) {
|
|
d.NewMessages = from.GetNewMessages()
|
|
d.NewEncryptedMessages = from.GetNewEncryptedMessages()
|
|
d.OtherUpdates = from.GetOtherUpdates()
|
|
d.Chats = from.GetChats()
|
|
d.Users = from.GetUsers()
|
|
d.IntermediateState = from.GetIntermediateState()
|
|
}
|
|
|
|
// TypeID returns type id in TL schema.
|
|
//
|
|
// See https://core.telegram.org/mtproto/TL-tl#remarks.
|
|
func (*UpdatesDifferenceSlice) TypeID() uint32 {
|
|
return UpdatesDifferenceSliceTypeID
|
|
}
|
|
|
|
// TypeName returns name of type in TL schema.
|
|
func (*UpdatesDifferenceSlice) TypeName() string {
|
|
return "updates.differenceSlice"
|
|
}
|
|
|
|
// TypeInfo returns info about TL type.
|
|
func (d *UpdatesDifferenceSlice) TypeInfo() tdp.Type {
|
|
typ := tdp.Type{
|
|
Name: "updates.differenceSlice",
|
|
ID: UpdatesDifferenceSliceTypeID,
|
|
}
|
|
if d == nil {
|
|
typ.Null = true
|
|
return typ
|
|
}
|
|
typ.Fields = []tdp.Field{
|
|
{
|
|
Name: "NewMessages",
|
|
SchemaName: "new_messages",
|
|
},
|
|
{
|
|
Name: "NewEncryptedMessages",
|
|
SchemaName: "new_encrypted_messages",
|
|
},
|
|
{
|
|
Name: "OtherUpdates",
|
|
SchemaName: "other_updates",
|
|
},
|
|
{
|
|
Name: "Chats",
|
|
SchemaName: "chats",
|
|
},
|
|
{
|
|
Name: "Users",
|
|
SchemaName: "users",
|
|
},
|
|
{
|
|
Name: "IntermediateState",
|
|
SchemaName: "intermediate_state",
|
|
},
|
|
}
|
|
return typ
|
|
}
|
|
|
|
// Encode implements bin.Encoder.
|
|
func (d *UpdatesDifferenceSlice) Encode(b *bin.Buffer) error {
|
|
if d == nil {
|
|
return fmt.Errorf("can't encode updates.differenceSlice#a8fb1981 as nil")
|
|
}
|
|
b.PutID(UpdatesDifferenceSliceTypeID)
|
|
return d.EncodeBare(b)
|
|
}
|
|
|
|
// EncodeBare implements bin.BareEncoder.
|
|
func (d *UpdatesDifferenceSlice) EncodeBare(b *bin.Buffer) error {
|
|
if d == nil {
|
|
return fmt.Errorf("can't encode updates.differenceSlice#a8fb1981 as nil")
|
|
}
|
|
b.PutVectorHeader(len(d.NewMessages))
|
|
for idx, v := range d.NewMessages {
|
|
if v == nil {
|
|
return fmt.Errorf("unable to encode updates.differenceSlice#a8fb1981: field new_messages element with index %d is nil", idx)
|
|
}
|
|
if err := v.Encode(b); err != nil {
|
|
return fmt.Errorf("unable to encode updates.differenceSlice#a8fb1981: field new_messages element with index %d: %w", idx, err)
|
|
}
|
|
}
|
|
b.PutVectorHeader(len(d.NewEncryptedMessages))
|
|
for idx, v := range d.NewEncryptedMessages {
|
|
if v == nil {
|
|
return fmt.Errorf("unable to encode updates.differenceSlice#a8fb1981: field new_encrypted_messages element with index %d is nil", idx)
|
|
}
|
|
if err := v.Encode(b); err != nil {
|
|
return fmt.Errorf("unable to encode updates.differenceSlice#a8fb1981: field new_encrypted_messages element with index %d: %w", idx, err)
|
|
}
|
|
}
|
|
b.PutVectorHeader(len(d.OtherUpdates))
|
|
for idx, v := range d.OtherUpdates {
|
|
if v == nil {
|
|
return fmt.Errorf("unable to encode updates.differenceSlice#a8fb1981: field other_updates element with index %d is nil", idx)
|
|
}
|
|
if err := v.Encode(b); err != nil {
|
|
return fmt.Errorf("unable to encode updates.differenceSlice#a8fb1981: field other_updates element with index %d: %w", idx, err)
|
|
}
|
|
}
|
|
b.PutVectorHeader(len(d.Chats))
|
|
for idx, v := range d.Chats {
|
|
if v == nil {
|
|
return fmt.Errorf("unable to encode updates.differenceSlice#a8fb1981: field chats element with index %d is nil", idx)
|
|
}
|
|
if err := v.Encode(b); err != nil {
|
|
return fmt.Errorf("unable to encode updates.differenceSlice#a8fb1981: field chats element with index %d: %w", idx, err)
|
|
}
|
|
}
|
|
b.PutVectorHeader(len(d.Users))
|
|
for idx, v := range d.Users {
|
|
if v == nil {
|
|
return fmt.Errorf("unable to encode updates.differenceSlice#a8fb1981: field users element with index %d is nil", idx)
|
|
}
|
|
if err := v.Encode(b); err != nil {
|
|
return fmt.Errorf("unable to encode updates.differenceSlice#a8fb1981: field users element with index %d: %w", idx, err)
|
|
}
|
|
}
|
|
if err := d.IntermediateState.Encode(b); err != nil {
|
|
return fmt.Errorf("unable to encode updates.differenceSlice#a8fb1981: field intermediate_state: %w", err)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// Decode implements bin.Decoder.
|
|
func (d *UpdatesDifferenceSlice) Decode(b *bin.Buffer) error {
|
|
if d == nil {
|
|
return fmt.Errorf("can't decode updates.differenceSlice#a8fb1981 to nil")
|
|
}
|
|
if err := b.ConsumeID(UpdatesDifferenceSliceTypeID); err != nil {
|
|
return fmt.Errorf("unable to decode updates.differenceSlice#a8fb1981: %w", err)
|
|
}
|
|
return d.DecodeBare(b)
|
|
}
|
|
|
|
// DecodeBare implements bin.BareDecoder.
|
|
func (d *UpdatesDifferenceSlice) DecodeBare(b *bin.Buffer) error {
|
|
if d == nil {
|
|
return fmt.Errorf("can't decode updates.differenceSlice#a8fb1981 to nil")
|
|
}
|
|
{
|
|
headerLen, err := b.VectorHeader()
|
|
if err != nil {
|
|
return fmt.Errorf("unable to decode updates.differenceSlice#a8fb1981: field new_messages: %w", err)
|
|
}
|
|
|
|
if headerLen > 0 {
|
|
d.NewMessages = make([]MessageClass, 0, headerLen%bin.PreallocateLimit)
|
|
}
|
|
for idx := 0; idx < headerLen; idx++ {
|
|
value, err := DecodeMessage(b)
|
|
if err != nil {
|
|
return fmt.Errorf("unable to decode updates.differenceSlice#a8fb1981: field new_messages: %w", err)
|
|
}
|
|
d.NewMessages = append(d.NewMessages, value)
|
|
}
|
|
}
|
|
{
|
|
headerLen, err := b.VectorHeader()
|
|
if err != nil {
|
|
return fmt.Errorf("unable to decode updates.differenceSlice#a8fb1981: field new_encrypted_messages: %w", err)
|
|
}
|
|
|
|
if headerLen > 0 {
|
|
d.NewEncryptedMessages = make([]EncryptedMessageClass, 0, headerLen%bin.PreallocateLimit)
|
|
}
|
|
for idx := 0; idx < headerLen; idx++ {
|
|
value, err := DecodeEncryptedMessage(b)
|
|
if err != nil {
|
|
return fmt.Errorf("unable to decode updates.differenceSlice#a8fb1981: field new_encrypted_messages: %w", err)
|
|
}
|
|
d.NewEncryptedMessages = append(d.NewEncryptedMessages, value)
|
|
}
|
|
}
|
|
{
|
|
headerLen, err := b.VectorHeader()
|
|
if err != nil {
|
|
return fmt.Errorf("unable to decode updates.differenceSlice#a8fb1981: field other_updates: %w", err)
|
|
}
|
|
|
|
if headerLen > 0 {
|
|
d.OtherUpdates = make([]UpdateClass, 0, headerLen%bin.PreallocateLimit)
|
|
}
|
|
for idx := 0; idx < headerLen; idx++ {
|
|
value, err := DecodeUpdate(b)
|
|
if err != nil {
|
|
return fmt.Errorf("unable to decode updates.differenceSlice#a8fb1981: field other_updates: %w", err)
|
|
}
|
|
d.OtherUpdates = append(d.OtherUpdates, value)
|
|
}
|
|
}
|
|
{
|
|
headerLen, err := b.VectorHeader()
|
|
if err != nil {
|
|
return fmt.Errorf("unable to decode updates.differenceSlice#a8fb1981: field chats: %w", err)
|
|
}
|
|
|
|
if headerLen > 0 {
|
|
d.Chats = make([]ChatClass, 0, headerLen%bin.PreallocateLimit)
|
|
}
|
|
for idx := 0; idx < headerLen; idx++ {
|
|
value, err := DecodeChat(b)
|
|
if err != nil {
|
|
return fmt.Errorf("unable to decode updates.differenceSlice#a8fb1981: field chats: %w", err)
|
|
}
|
|
d.Chats = append(d.Chats, value)
|
|
}
|
|
}
|
|
{
|
|
headerLen, err := b.VectorHeader()
|
|
if err != nil {
|
|
return fmt.Errorf("unable to decode updates.differenceSlice#a8fb1981: field users: %w", err)
|
|
}
|
|
|
|
if headerLen > 0 {
|
|
d.Users = make([]UserClass, 0, headerLen%bin.PreallocateLimit)
|
|
}
|
|
for idx := 0; idx < headerLen; idx++ {
|
|
value, err := DecodeUser(b)
|
|
if err != nil {
|
|
return fmt.Errorf("unable to decode updates.differenceSlice#a8fb1981: field users: %w", err)
|
|
}
|
|
d.Users = append(d.Users, value)
|
|
}
|
|
}
|
|
{
|
|
if err := d.IntermediateState.Decode(b); err != nil {
|
|
return fmt.Errorf("unable to decode updates.differenceSlice#a8fb1981: field intermediate_state: %w", err)
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// GetNewMessages returns value of NewMessages field.
|
|
func (d *UpdatesDifferenceSlice) GetNewMessages() (value []MessageClass) {
|
|
if d == nil {
|
|
return
|
|
}
|
|
return d.NewMessages
|
|
}
|
|
|
|
// GetNewEncryptedMessages returns value of NewEncryptedMessages field.
|
|
func (d *UpdatesDifferenceSlice) GetNewEncryptedMessages() (value []EncryptedMessageClass) {
|
|
if d == nil {
|
|
return
|
|
}
|
|
return d.NewEncryptedMessages
|
|
}
|
|
|
|
// GetOtherUpdates returns value of OtherUpdates field.
|
|
func (d *UpdatesDifferenceSlice) GetOtherUpdates() (value []UpdateClass) {
|
|
if d == nil {
|
|
return
|
|
}
|
|
return d.OtherUpdates
|
|
}
|
|
|
|
// GetChats returns value of Chats field.
|
|
func (d *UpdatesDifferenceSlice) GetChats() (value []ChatClass) {
|
|
if d == nil {
|
|
return
|
|
}
|
|
return d.Chats
|
|
}
|
|
|
|
// GetUsers returns value of Users field.
|
|
func (d *UpdatesDifferenceSlice) GetUsers() (value []UserClass) {
|
|
if d == nil {
|
|
return
|
|
}
|
|
return d.Users
|
|
}
|
|
|
|
// GetIntermediateState returns value of IntermediateState field.
|
|
func (d *UpdatesDifferenceSlice) GetIntermediateState() (value UpdatesState) {
|
|
if d == nil {
|
|
return
|
|
}
|
|
return d.IntermediateState
|
|
}
|
|
|
|
// MapNewMessages returns field NewMessages wrapped in MessageClassArray helper.
|
|
func (d *UpdatesDifferenceSlice) MapNewMessages() (value MessageClassArray) {
|
|
return MessageClassArray(d.NewMessages)
|
|
}
|
|
|
|
// MapNewEncryptedMessages returns field NewEncryptedMessages wrapped in EncryptedMessageClassArray helper.
|
|
func (d *UpdatesDifferenceSlice) MapNewEncryptedMessages() (value EncryptedMessageClassArray) {
|
|
return EncryptedMessageClassArray(d.NewEncryptedMessages)
|
|
}
|
|
|
|
// MapOtherUpdates returns field OtherUpdates wrapped in UpdateClassArray helper.
|
|
func (d *UpdatesDifferenceSlice) MapOtherUpdates() (value UpdateClassArray) {
|
|
return UpdateClassArray(d.OtherUpdates)
|
|
}
|
|
|
|
// MapChats returns field Chats wrapped in ChatClassArray helper.
|
|
func (d *UpdatesDifferenceSlice) MapChats() (value ChatClassArray) {
|
|
return ChatClassArray(d.Chats)
|
|
}
|
|
|
|
// MapUsers returns field Users wrapped in UserClassArray helper.
|
|
func (d *UpdatesDifferenceSlice) MapUsers() (value UserClassArray) {
|
|
return UserClassArray(d.Users)
|
|
}
|
|
|
|
// UpdatesDifferenceTooLong represents TL type `updates.differenceTooLong#4afe8f6d`.
|
|
// The difference is too long¹, and the specified state must be used to refetch updates.
|
|
//
|
|
// Links:
|
|
// 1. https://core.telegram.org/api/updates#recovering-gaps
|
|
//
|
|
// See https://core.telegram.org/constructor/updates.differenceTooLong for reference.
|
|
type UpdatesDifferenceTooLong struct {
|
|
// The new state to use.
|
|
Pts int
|
|
}
|
|
|
|
// UpdatesDifferenceTooLongTypeID is TL type id of UpdatesDifferenceTooLong.
|
|
const UpdatesDifferenceTooLongTypeID = 0x4afe8f6d
|
|
|
|
// construct implements constructor of UpdatesDifferenceClass.
|
|
func (d UpdatesDifferenceTooLong) construct() UpdatesDifferenceClass { return &d }
|
|
|
|
// Ensuring interfaces in compile-time for UpdatesDifferenceTooLong.
|
|
var (
|
|
_ bin.Encoder = &UpdatesDifferenceTooLong{}
|
|
_ bin.Decoder = &UpdatesDifferenceTooLong{}
|
|
_ bin.BareEncoder = &UpdatesDifferenceTooLong{}
|
|
_ bin.BareDecoder = &UpdatesDifferenceTooLong{}
|
|
|
|
_ UpdatesDifferenceClass = &UpdatesDifferenceTooLong{}
|
|
)
|
|
|
|
func (d *UpdatesDifferenceTooLong) Zero() bool {
|
|
if d == nil {
|
|
return true
|
|
}
|
|
if !(d.Pts == 0) {
|
|
return false
|
|
}
|
|
|
|
return true
|
|
}
|
|
|
|
// String implements fmt.Stringer.
|
|
func (d *UpdatesDifferenceTooLong) String() string {
|
|
if d == nil {
|
|
return "UpdatesDifferenceTooLong(nil)"
|
|
}
|
|
type Alias UpdatesDifferenceTooLong
|
|
return fmt.Sprintf("UpdatesDifferenceTooLong%+v", Alias(*d))
|
|
}
|
|
|
|
// FillFrom fills UpdatesDifferenceTooLong from given interface.
|
|
func (d *UpdatesDifferenceTooLong) FillFrom(from interface {
|
|
GetPts() (value int)
|
|
}) {
|
|
d.Pts = from.GetPts()
|
|
}
|
|
|
|
// TypeID returns type id in TL schema.
|
|
//
|
|
// See https://core.telegram.org/mtproto/TL-tl#remarks.
|
|
func (*UpdatesDifferenceTooLong) TypeID() uint32 {
|
|
return UpdatesDifferenceTooLongTypeID
|
|
}
|
|
|
|
// TypeName returns name of type in TL schema.
|
|
func (*UpdatesDifferenceTooLong) TypeName() string {
|
|
return "updates.differenceTooLong"
|
|
}
|
|
|
|
// TypeInfo returns info about TL type.
|
|
func (d *UpdatesDifferenceTooLong) TypeInfo() tdp.Type {
|
|
typ := tdp.Type{
|
|
Name: "updates.differenceTooLong",
|
|
ID: UpdatesDifferenceTooLongTypeID,
|
|
}
|
|
if d == nil {
|
|
typ.Null = true
|
|
return typ
|
|
}
|
|
typ.Fields = []tdp.Field{
|
|
{
|
|
Name: "Pts",
|
|
SchemaName: "pts",
|
|
},
|
|
}
|
|
return typ
|
|
}
|
|
|
|
// Encode implements bin.Encoder.
|
|
func (d *UpdatesDifferenceTooLong) Encode(b *bin.Buffer) error {
|
|
if d == nil {
|
|
return fmt.Errorf("can't encode updates.differenceTooLong#4afe8f6d as nil")
|
|
}
|
|
b.PutID(UpdatesDifferenceTooLongTypeID)
|
|
return d.EncodeBare(b)
|
|
}
|
|
|
|
// EncodeBare implements bin.BareEncoder.
|
|
func (d *UpdatesDifferenceTooLong) EncodeBare(b *bin.Buffer) error {
|
|
if d == nil {
|
|
return fmt.Errorf("can't encode updates.differenceTooLong#4afe8f6d as nil")
|
|
}
|
|
b.PutInt(d.Pts)
|
|
return nil
|
|
}
|
|
|
|
// Decode implements bin.Decoder.
|
|
func (d *UpdatesDifferenceTooLong) Decode(b *bin.Buffer) error {
|
|
if d == nil {
|
|
return fmt.Errorf("can't decode updates.differenceTooLong#4afe8f6d to nil")
|
|
}
|
|
if err := b.ConsumeID(UpdatesDifferenceTooLongTypeID); err != nil {
|
|
return fmt.Errorf("unable to decode updates.differenceTooLong#4afe8f6d: %w", err)
|
|
}
|
|
return d.DecodeBare(b)
|
|
}
|
|
|
|
// DecodeBare implements bin.BareDecoder.
|
|
func (d *UpdatesDifferenceTooLong) DecodeBare(b *bin.Buffer) error {
|
|
if d == nil {
|
|
return fmt.Errorf("can't decode updates.differenceTooLong#4afe8f6d to nil")
|
|
}
|
|
{
|
|
value, err := b.Int()
|
|
if err != nil {
|
|
return fmt.Errorf("unable to decode updates.differenceTooLong#4afe8f6d: field pts: %w", err)
|
|
}
|
|
d.Pts = value
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// GetPts returns value of Pts field.
|
|
func (d *UpdatesDifferenceTooLong) GetPts() (value int) {
|
|
if d == nil {
|
|
return
|
|
}
|
|
return d.Pts
|
|
}
|
|
|
|
// UpdatesDifferenceClassName is schema name of UpdatesDifferenceClass.
|
|
const UpdatesDifferenceClassName = "updates.Difference"
|
|
|
|
// UpdatesDifferenceClass represents updates.Difference generic type.
|
|
//
|
|
// See https://core.telegram.org/type/updates.Difference for reference.
|
|
//
|
|
// Example:
|
|
//
|
|
// g, err := tg.DecodeUpdatesDifference(buf)
|
|
// if err != nil {
|
|
// panic(err)
|
|
// }
|
|
// switch v := g.(type) {
|
|
// case *tg.UpdatesDifferenceEmpty: // updates.differenceEmpty#5d75a138
|
|
// case *tg.UpdatesDifference: // updates.difference#f49ca0
|
|
// case *tg.UpdatesDifferenceSlice: // updates.differenceSlice#a8fb1981
|
|
// case *tg.UpdatesDifferenceTooLong: // updates.differenceTooLong#4afe8f6d
|
|
// default: panic(v)
|
|
// }
|
|
type UpdatesDifferenceClass interface {
|
|
bin.Encoder
|
|
bin.Decoder
|
|
bin.BareEncoder
|
|
bin.BareDecoder
|
|
construct() UpdatesDifferenceClass
|
|
|
|
// TypeID returns type id in TL schema.
|
|
//
|
|
// See https://core.telegram.org/mtproto/TL-tl#remarks.
|
|
TypeID() uint32
|
|
// TypeName returns name of type in TL schema.
|
|
TypeName() string
|
|
// String implements fmt.Stringer.
|
|
String() string
|
|
// Zero returns true if current object has a zero value.
|
|
Zero() bool
|
|
}
|
|
|
|
// DecodeUpdatesDifference implements binary de-serialization for UpdatesDifferenceClass.
|
|
func DecodeUpdatesDifference(buf *bin.Buffer) (UpdatesDifferenceClass, error) {
|
|
id, err := buf.PeekID()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
switch id {
|
|
case UpdatesDifferenceEmptyTypeID:
|
|
// Decoding updates.differenceEmpty#5d75a138.
|
|
v := UpdatesDifferenceEmpty{}
|
|
if err := v.Decode(buf); err != nil {
|
|
return nil, fmt.Errorf("unable to decode UpdatesDifferenceClass: %w", err)
|
|
}
|
|
return &v, nil
|
|
case UpdatesDifferenceTypeID:
|
|
// Decoding updates.difference#f49ca0.
|
|
v := UpdatesDifference{}
|
|
if err := v.Decode(buf); err != nil {
|
|
return nil, fmt.Errorf("unable to decode UpdatesDifferenceClass: %w", err)
|
|
}
|
|
return &v, nil
|
|
case UpdatesDifferenceSliceTypeID:
|
|
// Decoding updates.differenceSlice#a8fb1981.
|
|
v := UpdatesDifferenceSlice{}
|
|
if err := v.Decode(buf); err != nil {
|
|
return nil, fmt.Errorf("unable to decode UpdatesDifferenceClass: %w", err)
|
|
}
|
|
return &v, nil
|
|
case UpdatesDifferenceTooLongTypeID:
|
|
// Decoding updates.differenceTooLong#4afe8f6d.
|
|
v := UpdatesDifferenceTooLong{}
|
|
if err := v.Decode(buf); err != nil {
|
|
return nil, fmt.Errorf("unable to decode UpdatesDifferenceClass: %w", err)
|
|
}
|
|
return &v, nil
|
|
default:
|
|
return nil, fmt.Errorf("unable to decode UpdatesDifferenceClass: %w", bin.NewUnexpectedID(id))
|
|
}
|
|
}
|
|
|
|
// UpdatesDifference boxes the UpdatesDifferenceClass providing a helper.
|
|
type UpdatesDifferenceBox struct {
|
|
Difference UpdatesDifferenceClass
|
|
}
|
|
|
|
// Decode implements bin.Decoder for UpdatesDifferenceBox.
|
|
func (b *UpdatesDifferenceBox) Decode(buf *bin.Buffer) error {
|
|
if b == nil {
|
|
return fmt.Errorf("unable to decode UpdatesDifferenceBox to nil")
|
|
}
|
|
v, err := DecodeUpdatesDifference(buf)
|
|
if err != nil {
|
|
return fmt.Errorf("unable to decode boxed value: %w", err)
|
|
}
|
|
b.Difference = v
|
|
return nil
|
|
}
|
|
|
|
// Encode implements bin.Encode for UpdatesDifferenceBox.
|
|
func (b *UpdatesDifferenceBox) Encode(buf *bin.Buffer) error {
|
|
if b == nil || b.Difference == nil {
|
|
return fmt.Errorf("unable to encode UpdatesDifferenceClass as nil")
|
|
}
|
|
return b.Difference.Encode(buf)
|
|
}
|