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
1856 lines
47 KiB
Go
1856 lines
47 KiB
Go
// Code generated by gotdgen, DO NOT EDIT.
|
|
|
|
package e2e
|
|
|
|
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{}
|
|
)
|
|
|
|
// DocumentAttributeImageSize represents TL type `documentAttributeImageSize#6c37c15c`.
|
|
// Defines the width and height of an image uploaded as document
|
|
//
|
|
// See https://core.telegram.org/constructor/documentAttributeImageSize for reference.
|
|
type DocumentAttributeImageSize struct {
|
|
// Width of image
|
|
W int
|
|
// Height of image
|
|
H int
|
|
}
|
|
|
|
// DocumentAttributeImageSizeTypeID is TL type id of DocumentAttributeImageSize.
|
|
const DocumentAttributeImageSizeTypeID = 0x6c37c15c
|
|
|
|
// construct implements constructor of DocumentAttributeClass.
|
|
func (d DocumentAttributeImageSize) construct() DocumentAttributeClass { return &d }
|
|
|
|
// Ensuring interfaces in compile-time for DocumentAttributeImageSize.
|
|
var (
|
|
_ bin.Encoder = &DocumentAttributeImageSize{}
|
|
_ bin.Decoder = &DocumentAttributeImageSize{}
|
|
_ bin.BareEncoder = &DocumentAttributeImageSize{}
|
|
_ bin.BareDecoder = &DocumentAttributeImageSize{}
|
|
|
|
_ DocumentAttributeClass = &DocumentAttributeImageSize{}
|
|
)
|
|
|
|
func (d *DocumentAttributeImageSize) Zero() bool {
|
|
if d == nil {
|
|
return true
|
|
}
|
|
if !(d.W == 0) {
|
|
return false
|
|
}
|
|
if !(d.H == 0) {
|
|
return false
|
|
}
|
|
|
|
return true
|
|
}
|
|
|
|
// String implements fmt.Stringer.
|
|
func (d *DocumentAttributeImageSize) String() string {
|
|
if d == nil {
|
|
return "DocumentAttributeImageSize(nil)"
|
|
}
|
|
type Alias DocumentAttributeImageSize
|
|
return fmt.Sprintf("DocumentAttributeImageSize%+v", Alias(*d))
|
|
}
|
|
|
|
// TypeID returns type id in TL schema.
|
|
//
|
|
// See https://core.telegram.org/mtproto/TL-tl#remarks.
|
|
func (*DocumentAttributeImageSize) TypeID() uint32 {
|
|
return DocumentAttributeImageSizeTypeID
|
|
}
|
|
|
|
// TypeName returns name of type in TL schema.
|
|
func (*DocumentAttributeImageSize) TypeName() string {
|
|
return "documentAttributeImageSize"
|
|
}
|
|
|
|
// TypeInfo returns info about TL type.
|
|
func (d *DocumentAttributeImageSize) TypeInfo() tdp.Type {
|
|
typ := tdp.Type{
|
|
Name: "documentAttributeImageSize",
|
|
ID: DocumentAttributeImageSizeTypeID,
|
|
}
|
|
if d == nil {
|
|
typ.Null = true
|
|
return typ
|
|
}
|
|
typ.Fields = []tdp.Field{
|
|
{
|
|
Name: "W",
|
|
SchemaName: "w",
|
|
},
|
|
{
|
|
Name: "H",
|
|
SchemaName: "h",
|
|
},
|
|
}
|
|
return typ
|
|
}
|
|
|
|
// Encode implements bin.Encoder.
|
|
func (d *DocumentAttributeImageSize) Encode(b *bin.Buffer) error {
|
|
if d == nil {
|
|
return fmt.Errorf("can't encode documentAttributeImageSize#6c37c15c as nil")
|
|
}
|
|
b.PutID(DocumentAttributeImageSizeTypeID)
|
|
return d.EncodeBare(b)
|
|
}
|
|
|
|
// EncodeBare implements bin.BareEncoder.
|
|
func (d *DocumentAttributeImageSize) EncodeBare(b *bin.Buffer) error {
|
|
if d == nil {
|
|
return fmt.Errorf("can't encode documentAttributeImageSize#6c37c15c as nil")
|
|
}
|
|
b.PutInt(d.W)
|
|
b.PutInt(d.H)
|
|
return nil
|
|
}
|
|
|
|
// Decode implements bin.Decoder.
|
|
func (d *DocumentAttributeImageSize) Decode(b *bin.Buffer) error {
|
|
if d == nil {
|
|
return fmt.Errorf("can't decode documentAttributeImageSize#6c37c15c to nil")
|
|
}
|
|
if err := b.ConsumeID(DocumentAttributeImageSizeTypeID); err != nil {
|
|
return fmt.Errorf("unable to decode documentAttributeImageSize#6c37c15c: %w", err)
|
|
}
|
|
return d.DecodeBare(b)
|
|
}
|
|
|
|
// DecodeBare implements bin.BareDecoder.
|
|
func (d *DocumentAttributeImageSize) DecodeBare(b *bin.Buffer) error {
|
|
if d == nil {
|
|
return fmt.Errorf("can't decode documentAttributeImageSize#6c37c15c to nil")
|
|
}
|
|
{
|
|
value, err := b.Int()
|
|
if err != nil {
|
|
return fmt.Errorf("unable to decode documentAttributeImageSize#6c37c15c: field w: %w", err)
|
|
}
|
|
d.W = value
|
|
}
|
|
{
|
|
value, err := b.Int()
|
|
if err != nil {
|
|
return fmt.Errorf("unable to decode documentAttributeImageSize#6c37c15c: field h: %w", err)
|
|
}
|
|
d.H = value
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// GetW returns value of W field.
|
|
func (d *DocumentAttributeImageSize) GetW() (value int) {
|
|
if d == nil {
|
|
return
|
|
}
|
|
return d.W
|
|
}
|
|
|
|
// GetH returns value of H field.
|
|
func (d *DocumentAttributeImageSize) GetH() (value int) {
|
|
if d == nil {
|
|
return
|
|
}
|
|
return d.H
|
|
}
|
|
|
|
// DocumentAttributeAnimated represents TL type `documentAttributeAnimated#11b58939`.
|
|
// Defines an animated GIF
|
|
//
|
|
// See https://core.telegram.org/constructor/documentAttributeAnimated for reference.
|
|
type DocumentAttributeAnimated struct {
|
|
}
|
|
|
|
// DocumentAttributeAnimatedTypeID is TL type id of DocumentAttributeAnimated.
|
|
const DocumentAttributeAnimatedTypeID = 0x11b58939
|
|
|
|
// construct implements constructor of DocumentAttributeClass.
|
|
func (d DocumentAttributeAnimated) construct() DocumentAttributeClass { return &d }
|
|
|
|
// Ensuring interfaces in compile-time for DocumentAttributeAnimated.
|
|
var (
|
|
_ bin.Encoder = &DocumentAttributeAnimated{}
|
|
_ bin.Decoder = &DocumentAttributeAnimated{}
|
|
_ bin.BareEncoder = &DocumentAttributeAnimated{}
|
|
_ bin.BareDecoder = &DocumentAttributeAnimated{}
|
|
|
|
_ DocumentAttributeClass = &DocumentAttributeAnimated{}
|
|
)
|
|
|
|
func (d *DocumentAttributeAnimated) Zero() bool {
|
|
if d == nil {
|
|
return true
|
|
}
|
|
|
|
return true
|
|
}
|
|
|
|
// String implements fmt.Stringer.
|
|
func (d *DocumentAttributeAnimated) String() string {
|
|
if d == nil {
|
|
return "DocumentAttributeAnimated(nil)"
|
|
}
|
|
type Alias DocumentAttributeAnimated
|
|
return fmt.Sprintf("DocumentAttributeAnimated%+v", Alias(*d))
|
|
}
|
|
|
|
// TypeID returns type id in TL schema.
|
|
//
|
|
// See https://core.telegram.org/mtproto/TL-tl#remarks.
|
|
func (*DocumentAttributeAnimated) TypeID() uint32 {
|
|
return DocumentAttributeAnimatedTypeID
|
|
}
|
|
|
|
// TypeName returns name of type in TL schema.
|
|
func (*DocumentAttributeAnimated) TypeName() string {
|
|
return "documentAttributeAnimated"
|
|
}
|
|
|
|
// TypeInfo returns info about TL type.
|
|
func (d *DocumentAttributeAnimated) TypeInfo() tdp.Type {
|
|
typ := tdp.Type{
|
|
Name: "documentAttributeAnimated",
|
|
ID: DocumentAttributeAnimatedTypeID,
|
|
}
|
|
if d == nil {
|
|
typ.Null = true
|
|
return typ
|
|
}
|
|
typ.Fields = []tdp.Field{}
|
|
return typ
|
|
}
|
|
|
|
// Encode implements bin.Encoder.
|
|
func (d *DocumentAttributeAnimated) Encode(b *bin.Buffer) error {
|
|
if d == nil {
|
|
return fmt.Errorf("can't encode documentAttributeAnimated#11b58939 as nil")
|
|
}
|
|
b.PutID(DocumentAttributeAnimatedTypeID)
|
|
return d.EncodeBare(b)
|
|
}
|
|
|
|
// EncodeBare implements bin.BareEncoder.
|
|
func (d *DocumentAttributeAnimated) EncodeBare(b *bin.Buffer) error {
|
|
if d == nil {
|
|
return fmt.Errorf("can't encode documentAttributeAnimated#11b58939 as nil")
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// Decode implements bin.Decoder.
|
|
func (d *DocumentAttributeAnimated) Decode(b *bin.Buffer) error {
|
|
if d == nil {
|
|
return fmt.Errorf("can't decode documentAttributeAnimated#11b58939 to nil")
|
|
}
|
|
if err := b.ConsumeID(DocumentAttributeAnimatedTypeID); err != nil {
|
|
return fmt.Errorf("unable to decode documentAttributeAnimated#11b58939: %w", err)
|
|
}
|
|
return d.DecodeBare(b)
|
|
}
|
|
|
|
// DecodeBare implements bin.BareDecoder.
|
|
func (d *DocumentAttributeAnimated) DecodeBare(b *bin.Buffer) error {
|
|
if d == nil {
|
|
return fmt.Errorf("can't decode documentAttributeAnimated#11b58939 to nil")
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// DocumentAttributeSticker23 represents TL type `documentAttributeSticker23#fb0a5727`.
|
|
//
|
|
// See https://core.telegram.org/constructor/documentAttributeSticker23 for reference.
|
|
type DocumentAttributeSticker23 struct {
|
|
}
|
|
|
|
// DocumentAttributeSticker23TypeID is TL type id of DocumentAttributeSticker23.
|
|
const DocumentAttributeSticker23TypeID = 0xfb0a5727
|
|
|
|
// construct implements constructor of DocumentAttributeClass.
|
|
func (d DocumentAttributeSticker23) construct() DocumentAttributeClass { return &d }
|
|
|
|
// Ensuring interfaces in compile-time for DocumentAttributeSticker23.
|
|
var (
|
|
_ bin.Encoder = &DocumentAttributeSticker23{}
|
|
_ bin.Decoder = &DocumentAttributeSticker23{}
|
|
_ bin.BareEncoder = &DocumentAttributeSticker23{}
|
|
_ bin.BareDecoder = &DocumentAttributeSticker23{}
|
|
|
|
_ DocumentAttributeClass = &DocumentAttributeSticker23{}
|
|
)
|
|
|
|
func (d *DocumentAttributeSticker23) Zero() bool {
|
|
if d == nil {
|
|
return true
|
|
}
|
|
|
|
return true
|
|
}
|
|
|
|
// String implements fmt.Stringer.
|
|
func (d *DocumentAttributeSticker23) String() string {
|
|
if d == nil {
|
|
return "DocumentAttributeSticker23(nil)"
|
|
}
|
|
type Alias DocumentAttributeSticker23
|
|
return fmt.Sprintf("DocumentAttributeSticker23%+v", Alias(*d))
|
|
}
|
|
|
|
// TypeID returns type id in TL schema.
|
|
//
|
|
// See https://core.telegram.org/mtproto/TL-tl#remarks.
|
|
func (*DocumentAttributeSticker23) TypeID() uint32 {
|
|
return DocumentAttributeSticker23TypeID
|
|
}
|
|
|
|
// TypeName returns name of type in TL schema.
|
|
func (*DocumentAttributeSticker23) TypeName() string {
|
|
return "documentAttributeSticker23"
|
|
}
|
|
|
|
// TypeInfo returns info about TL type.
|
|
func (d *DocumentAttributeSticker23) TypeInfo() tdp.Type {
|
|
typ := tdp.Type{
|
|
Name: "documentAttributeSticker23",
|
|
ID: DocumentAttributeSticker23TypeID,
|
|
}
|
|
if d == nil {
|
|
typ.Null = true
|
|
return typ
|
|
}
|
|
typ.Fields = []tdp.Field{}
|
|
return typ
|
|
}
|
|
|
|
// Encode implements bin.Encoder.
|
|
func (d *DocumentAttributeSticker23) Encode(b *bin.Buffer) error {
|
|
if d == nil {
|
|
return fmt.Errorf("can't encode documentAttributeSticker23#fb0a5727 as nil")
|
|
}
|
|
b.PutID(DocumentAttributeSticker23TypeID)
|
|
return d.EncodeBare(b)
|
|
}
|
|
|
|
// EncodeBare implements bin.BareEncoder.
|
|
func (d *DocumentAttributeSticker23) EncodeBare(b *bin.Buffer) error {
|
|
if d == nil {
|
|
return fmt.Errorf("can't encode documentAttributeSticker23#fb0a5727 as nil")
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// Decode implements bin.Decoder.
|
|
func (d *DocumentAttributeSticker23) Decode(b *bin.Buffer) error {
|
|
if d == nil {
|
|
return fmt.Errorf("can't decode documentAttributeSticker23#fb0a5727 to nil")
|
|
}
|
|
if err := b.ConsumeID(DocumentAttributeSticker23TypeID); err != nil {
|
|
return fmt.Errorf("unable to decode documentAttributeSticker23#fb0a5727: %w", err)
|
|
}
|
|
return d.DecodeBare(b)
|
|
}
|
|
|
|
// DecodeBare implements bin.BareDecoder.
|
|
func (d *DocumentAttributeSticker23) DecodeBare(b *bin.Buffer) error {
|
|
if d == nil {
|
|
return fmt.Errorf("can't decode documentAttributeSticker23#fb0a5727 to nil")
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// DocumentAttributeVideo23 represents TL type `documentAttributeVideo23#5910cccb`.
|
|
//
|
|
// See https://core.telegram.org/constructor/documentAttributeVideo23 for reference.
|
|
type DocumentAttributeVideo23 struct {
|
|
// Duration field of DocumentAttributeVideo23.
|
|
Duration int
|
|
// W field of DocumentAttributeVideo23.
|
|
W int
|
|
// H field of DocumentAttributeVideo23.
|
|
H int
|
|
}
|
|
|
|
// DocumentAttributeVideo23TypeID is TL type id of DocumentAttributeVideo23.
|
|
const DocumentAttributeVideo23TypeID = 0x5910cccb
|
|
|
|
// construct implements constructor of DocumentAttributeClass.
|
|
func (d DocumentAttributeVideo23) construct() DocumentAttributeClass { return &d }
|
|
|
|
// Ensuring interfaces in compile-time for DocumentAttributeVideo23.
|
|
var (
|
|
_ bin.Encoder = &DocumentAttributeVideo23{}
|
|
_ bin.Decoder = &DocumentAttributeVideo23{}
|
|
_ bin.BareEncoder = &DocumentAttributeVideo23{}
|
|
_ bin.BareDecoder = &DocumentAttributeVideo23{}
|
|
|
|
_ DocumentAttributeClass = &DocumentAttributeVideo23{}
|
|
)
|
|
|
|
func (d *DocumentAttributeVideo23) Zero() bool {
|
|
if d == nil {
|
|
return true
|
|
}
|
|
if !(d.Duration == 0) {
|
|
return false
|
|
}
|
|
if !(d.W == 0) {
|
|
return false
|
|
}
|
|
if !(d.H == 0) {
|
|
return false
|
|
}
|
|
|
|
return true
|
|
}
|
|
|
|
// String implements fmt.Stringer.
|
|
func (d *DocumentAttributeVideo23) String() string {
|
|
if d == nil {
|
|
return "DocumentAttributeVideo23(nil)"
|
|
}
|
|
type Alias DocumentAttributeVideo23
|
|
return fmt.Sprintf("DocumentAttributeVideo23%+v", Alias(*d))
|
|
}
|
|
|
|
// TypeID returns type id in TL schema.
|
|
//
|
|
// See https://core.telegram.org/mtproto/TL-tl#remarks.
|
|
func (*DocumentAttributeVideo23) TypeID() uint32 {
|
|
return DocumentAttributeVideo23TypeID
|
|
}
|
|
|
|
// TypeName returns name of type in TL schema.
|
|
func (*DocumentAttributeVideo23) TypeName() string {
|
|
return "documentAttributeVideo23"
|
|
}
|
|
|
|
// TypeInfo returns info about TL type.
|
|
func (d *DocumentAttributeVideo23) TypeInfo() tdp.Type {
|
|
typ := tdp.Type{
|
|
Name: "documentAttributeVideo23",
|
|
ID: DocumentAttributeVideo23TypeID,
|
|
}
|
|
if d == nil {
|
|
typ.Null = true
|
|
return typ
|
|
}
|
|
typ.Fields = []tdp.Field{
|
|
{
|
|
Name: "Duration",
|
|
SchemaName: "duration",
|
|
},
|
|
{
|
|
Name: "W",
|
|
SchemaName: "w",
|
|
},
|
|
{
|
|
Name: "H",
|
|
SchemaName: "h",
|
|
},
|
|
}
|
|
return typ
|
|
}
|
|
|
|
// Encode implements bin.Encoder.
|
|
func (d *DocumentAttributeVideo23) Encode(b *bin.Buffer) error {
|
|
if d == nil {
|
|
return fmt.Errorf("can't encode documentAttributeVideo23#5910cccb as nil")
|
|
}
|
|
b.PutID(DocumentAttributeVideo23TypeID)
|
|
return d.EncodeBare(b)
|
|
}
|
|
|
|
// EncodeBare implements bin.BareEncoder.
|
|
func (d *DocumentAttributeVideo23) EncodeBare(b *bin.Buffer) error {
|
|
if d == nil {
|
|
return fmt.Errorf("can't encode documentAttributeVideo23#5910cccb as nil")
|
|
}
|
|
b.PutInt(d.Duration)
|
|
b.PutInt(d.W)
|
|
b.PutInt(d.H)
|
|
return nil
|
|
}
|
|
|
|
// Decode implements bin.Decoder.
|
|
func (d *DocumentAttributeVideo23) Decode(b *bin.Buffer) error {
|
|
if d == nil {
|
|
return fmt.Errorf("can't decode documentAttributeVideo23#5910cccb to nil")
|
|
}
|
|
if err := b.ConsumeID(DocumentAttributeVideo23TypeID); err != nil {
|
|
return fmt.Errorf("unable to decode documentAttributeVideo23#5910cccb: %w", err)
|
|
}
|
|
return d.DecodeBare(b)
|
|
}
|
|
|
|
// DecodeBare implements bin.BareDecoder.
|
|
func (d *DocumentAttributeVideo23) DecodeBare(b *bin.Buffer) error {
|
|
if d == nil {
|
|
return fmt.Errorf("can't decode documentAttributeVideo23#5910cccb to nil")
|
|
}
|
|
{
|
|
value, err := b.Int()
|
|
if err != nil {
|
|
return fmt.Errorf("unable to decode documentAttributeVideo23#5910cccb: field duration: %w", err)
|
|
}
|
|
d.Duration = value
|
|
}
|
|
{
|
|
value, err := b.Int()
|
|
if err != nil {
|
|
return fmt.Errorf("unable to decode documentAttributeVideo23#5910cccb: field w: %w", err)
|
|
}
|
|
d.W = value
|
|
}
|
|
{
|
|
value, err := b.Int()
|
|
if err != nil {
|
|
return fmt.Errorf("unable to decode documentAttributeVideo23#5910cccb: field h: %w", err)
|
|
}
|
|
d.H = value
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// GetDuration returns value of Duration field.
|
|
func (d *DocumentAttributeVideo23) GetDuration() (value int) {
|
|
if d == nil {
|
|
return
|
|
}
|
|
return d.Duration
|
|
}
|
|
|
|
// GetW returns value of W field.
|
|
func (d *DocumentAttributeVideo23) GetW() (value int) {
|
|
if d == nil {
|
|
return
|
|
}
|
|
return d.W
|
|
}
|
|
|
|
// GetH returns value of H field.
|
|
func (d *DocumentAttributeVideo23) GetH() (value int) {
|
|
if d == nil {
|
|
return
|
|
}
|
|
return d.H
|
|
}
|
|
|
|
// DocumentAttributeAudio23 represents TL type `documentAttributeAudio23#51448e5`.
|
|
//
|
|
// See https://core.telegram.org/constructor/documentAttributeAudio23 for reference.
|
|
type DocumentAttributeAudio23 struct {
|
|
// Duration field of DocumentAttributeAudio23.
|
|
Duration int
|
|
}
|
|
|
|
// DocumentAttributeAudio23TypeID is TL type id of DocumentAttributeAudio23.
|
|
const DocumentAttributeAudio23TypeID = 0x51448e5
|
|
|
|
// construct implements constructor of DocumentAttributeClass.
|
|
func (d DocumentAttributeAudio23) construct() DocumentAttributeClass { return &d }
|
|
|
|
// Ensuring interfaces in compile-time for DocumentAttributeAudio23.
|
|
var (
|
|
_ bin.Encoder = &DocumentAttributeAudio23{}
|
|
_ bin.Decoder = &DocumentAttributeAudio23{}
|
|
_ bin.BareEncoder = &DocumentAttributeAudio23{}
|
|
_ bin.BareDecoder = &DocumentAttributeAudio23{}
|
|
|
|
_ DocumentAttributeClass = &DocumentAttributeAudio23{}
|
|
)
|
|
|
|
func (d *DocumentAttributeAudio23) Zero() bool {
|
|
if d == nil {
|
|
return true
|
|
}
|
|
if !(d.Duration == 0) {
|
|
return false
|
|
}
|
|
|
|
return true
|
|
}
|
|
|
|
// String implements fmt.Stringer.
|
|
func (d *DocumentAttributeAudio23) String() string {
|
|
if d == nil {
|
|
return "DocumentAttributeAudio23(nil)"
|
|
}
|
|
type Alias DocumentAttributeAudio23
|
|
return fmt.Sprintf("DocumentAttributeAudio23%+v", Alias(*d))
|
|
}
|
|
|
|
// TypeID returns type id in TL schema.
|
|
//
|
|
// See https://core.telegram.org/mtproto/TL-tl#remarks.
|
|
func (*DocumentAttributeAudio23) TypeID() uint32 {
|
|
return DocumentAttributeAudio23TypeID
|
|
}
|
|
|
|
// TypeName returns name of type in TL schema.
|
|
func (*DocumentAttributeAudio23) TypeName() string {
|
|
return "documentAttributeAudio23"
|
|
}
|
|
|
|
// TypeInfo returns info about TL type.
|
|
func (d *DocumentAttributeAudio23) TypeInfo() tdp.Type {
|
|
typ := tdp.Type{
|
|
Name: "documentAttributeAudio23",
|
|
ID: DocumentAttributeAudio23TypeID,
|
|
}
|
|
if d == nil {
|
|
typ.Null = true
|
|
return typ
|
|
}
|
|
typ.Fields = []tdp.Field{
|
|
{
|
|
Name: "Duration",
|
|
SchemaName: "duration",
|
|
},
|
|
}
|
|
return typ
|
|
}
|
|
|
|
// Encode implements bin.Encoder.
|
|
func (d *DocumentAttributeAudio23) Encode(b *bin.Buffer) error {
|
|
if d == nil {
|
|
return fmt.Errorf("can't encode documentAttributeAudio23#51448e5 as nil")
|
|
}
|
|
b.PutID(DocumentAttributeAudio23TypeID)
|
|
return d.EncodeBare(b)
|
|
}
|
|
|
|
// EncodeBare implements bin.BareEncoder.
|
|
func (d *DocumentAttributeAudio23) EncodeBare(b *bin.Buffer) error {
|
|
if d == nil {
|
|
return fmt.Errorf("can't encode documentAttributeAudio23#51448e5 as nil")
|
|
}
|
|
b.PutInt(d.Duration)
|
|
return nil
|
|
}
|
|
|
|
// Decode implements bin.Decoder.
|
|
func (d *DocumentAttributeAudio23) Decode(b *bin.Buffer) error {
|
|
if d == nil {
|
|
return fmt.Errorf("can't decode documentAttributeAudio23#51448e5 to nil")
|
|
}
|
|
if err := b.ConsumeID(DocumentAttributeAudio23TypeID); err != nil {
|
|
return fmt.Errorf("unable to decode documentAttributeAudio23#51448e5: %w", err)
|
|
}
|
|
return d.DecodeBare(b)
|
|
}
|
|
|
|
// DecodeBare implements bin.BareDecoder.
|
|
func (d *DocumentAttributeAudio23) DecodeBare(b *bin.Buffer) error {
|
|
if d == nil {
|
|
return fmt.Errorf("can't decode documentAttributeAudio23#51448e5 to nil")
|
|
}
|
|
{
|
|
value, err := b.Int()
|
|
if err != nil {
|
|
return fmt.Errorf("unable to decode documentAttributeAudio23#51448e5: field duration: %w", err)
|
|
}
|
|
d.Duration = value
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// GetDuration returns value of Duration field.
|
|
func (d *DocumentAttributeAudio23) GetDuration() (value int) {
|
|
if d == nil {
|
|
return
|
|
}
|
|
return d.Duration
|
|
}
|
|
|
|
// DocumentAttributeFilename represents TL type `documentAttributeFilename#15590068`.
|
|
// A simple document with a file name
|
|
//
|
|
// See https://core.telegram.org/constructor/documentAttributeFilename for reference.
|
|
type DocumentAttributeFilename struct {
|
|
// The file name
|
|
FileName string
|
|
}
|
|
|
|
// DocumentAttributeFilenameTypeID is TL type id of DocumentAttributeFilename.
|
|
const DocumentAttributeFilenameTypeID = 0x15590068
|
|
|
|
// construct implements constructor of DocumentAttributeClass.
|
|
func (d DocumentAttributeFilename) construct() DocumentAttributeClass { return &d }
|
|
|
|
// Ensuring interfaces in compile-time for DocumentAttributeFilename.
|
|
var (
|
|
_ bin.Encoder = &DocumentAttributeFilename{}
|
|
_ bin.Decoder = &DocumentAttributeFilename{}
|
|
_ bin.BareEncoder = &DocumentAttributeFilename{}
|
|
_ bin.BareDecoder = &DocumentAttributeFilename{}
|
|
|
|
_ DocumentAttributeClass = &DocumentAttributeFilename{}
|
|
)
|
|
|
|
func (d *DocumentAttributeFilename) Zero() bool {
|
|
if d == nil {
|
|
return true
|
|
}
|
|
if !(d.FileName == "") {
|
|
return false
|
|
}
|
|
|
|
return true
|
|
}
|
|
|
|
// String implements fmt.Stringer.
|
|
func (d *DocumentAttributeFilename) String() string {
|
|
if d == nil {
|
|
return "DocumentAttributeFilename(nil)"
|
|
}
|
|
type Alias DocumentAttributeFilename
|
|
return fmt.Sprintf("DocumentAttributeFilename%+v", Alias(*d))
|
|
}
|
|
|
|
// TypeID returns type id in TL schema.
|
|
//
|
|
// See https://core.telegram.org/mtproto/TL-tl#remarks.
|
|
func (*DocumentAttributeFilename) TypeID() uint32 {
|
|
return DocumentAttributeFilenameTypeID
|
|
}
|
|
|
|
// TypeName returns name of type in TL schema.
|
|
func (*DocumentAttributeFilename) TypeName() string {
|
|
return "documentAttributeFilename"
|
|
}
|
|
|
|
// TypeInfo returns info about TL type.
|
|
func (d *DocumentAttributeFilename) TypeInfo() tdp.Type {
|
|
typ := tdp.Type{
|
|
Name: "documentAttributeFilename",
|
|
ID: DocumentAttributeFilenameTypeID,
|
|
}
|
|
if d == nil {
|
|
typ.Null = true
|
|
return typ
|
|
}
|
|
typ.Fields = []tdp.Field{
|
|
{
|
|
Name: "FileName",
|
|
SchemaName: "file_name",
|
|
},
|
|
}
|
|
return typ
|
|
}
|
|
|
|
// Encode implements bin.Encoder.
|
|
func (d *DocumentAttributeFilename) Encode(b *bin.Buffer) error {
|
|
if d == nil {
|
|
return fmt.Errorf("can't encode documentAttributeFilename#15590068 as nil")
|
|
}
|
|
b.PutID(DocumentAttributeFilenameTypeID)
|
|
return d.EncodeBare(b)
|
|
}
|
|
|
|
// EncodeBare implements bin.BareEncoder.
|
|
func (d *DocumentAttributeFilename) EncodeBare(b *bin.Buffer) error {
|
|
if d == nil {
|
|
return fmt.Errorf("can't encode documentAttributeFilename#15590068 as nil")
|
|
}
|
|
b.PutString(d.FileName)
|
|
return nil
|
|
}
|
|
|
|
// Decode implements bin.Decoder.
|
|
func (d *DocumentAttributeFilename) Decode(b *bin.Buffer) error {
|
|
if d == nil {
|
|
return fmt.Errorf("can't decode documentAttributeFilename#15590068 to nil")
|
|
}
|
|
if err := b.ConsumeID(DocumentAttributeFilenameTypeID); err != nil {
|
|
return fmt.Errorf("unable to decode documentAttributeFilename#15590068: %w", err)
|
|
}
|
|
return d.DecodeBare(b)
|
|
}
|
|
|
|
// DecodeBare implements bin.BareDecoder.
|
|
func (d *DocumentAttributeFilename) DecodeBare(b *bin.Buffer) error {
|
|
if d == nil {
|
|
return fmt.Errorf("can't decode documentAttributeFilename#15590068 to nil")
|
|
}
|
|
{
|
|
value, err := b.String()
|
|
if err != nil {
|
|
return fmt.Errorf("unable to decode documentAttributeFilename#15590068: field file_name: %w", err)
|
|
}
|
|
d.FileName = value
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// GetFileName returns value of FileName field.
|
|
func (d *DocumentAttributeFilename) GetFileName() (value string) {
|
|
if d == nil {
|
|
return
|
|
}
|
|
return d.FileName
|
|
}
|
|
|
|
// DocumentAttributeAudio45 represents TL type `documentAttributeAudio45#ded218e0`.
|
|
//
|
|
// See https://core.telegram.org/constructor/documentAttributeAudio45 for reference.
|
|
type DocumentAttributeAudio45 struct {
|
|
// Duration field of DocumentAttributeAudio45.
|
|
Duration int
|
|
// Title field of DocumentAttributeAudio45.
|
|
Title string
|
|
// Performer field of DocumentAttributeAudio45.
|
|
Performer string
|
|
}
|
|
|
|
// DocumentAttributeAudio45TypeID is TL type id of DocumentAttributeAudio45.
|
|
const DocumentAttributeAudio45TypeID = 0xded218e0
|
|
|
|
// construct implements constructor of DocumentAttributeClass.
|
|
func (d DocumentAttributeAudio45) construct() DocumentAttributeClass { return &d }
|
|
|
|
// Ensuring interfaces in compile-time for DocumentAttributeAudio45.
|
|
var (
|
|
_ bin.Encoder = &DocumentAttributeAudio45{}
|
|
_ bin.Decoder = &DocumentAttributeAudio45{}
|
|
_ bin.BareEncoder = &DocumentAttributeAudio45{}
|
|
_ bin.BareDecoder = &DocumentAttributeAudio45{}
|
|
|
|
_ DocumentAttributeClass = &DocumentAttributeAudio45{}
|
|
)
|
|
|
|
func (d *DocumentAttributeAudio45) Zero() bool {
|
|
if d == nil {
|
|
return true
|
|
}
|
|
if !(d.Duration == 0) {
|
|
return false
|
|
}
|
|
if !(d.Title == "") {
|
|
return false
|
|
}
|
|
if !(d.Performer == "") {
|
|
return false
|
|
}
|
|
|
|
return true
|
|
}
|
|
|
|
// String implements fmt.Stringer.
|
|
func (d *DocumentAttributeAudio45) String() string {
|
|
if d == nil {
|
|
return "DocumentAttributeAudio45(nil)"
|
|
}
|
|
type Alias DocumentAttributeAudio45
|
|
return fmt.Sprintf("DocumentAttributeAudio45%+v", Alias(*d))
|
|
}
|
|
|
|
// TypeID returns type id in TL schema.
|
|
//
|
|
// See https://core.telegram.org/mtproto/TL-tl#remarks.
|
|
func (*DocumentAttributeAudio45) TypeID() uint32 {
|
|
return DocumentAttributeAudio45TypeID
|
|
}
|
|
|
|
// TypeName returns name of type in TL schema.
|
|
func (*DocumentAttributeAudio45) TypeName() string {
|
|
return "documentAttributeAudio45"
|
|
}
|
|
|
|
// TypeInfo returns info about TL type.
|
|
func (d *DocumentAttributeAudio45) TypeInfo() tdp.Type {
|
|
typ := tdp.Type{
|
|
Name: "documentAttributeAudio45",
|
|
ID: DocumentAttributeAudio45TypeID,
|
|
}
|
|
if d == nil {
|
|
typ.Null = true
|
|
return typ
|
|
}
|
|
typ.Fields = []tdp.Field{
|
|
{
|
|
Name: "Duration",
|
|
SchemaName: "duration",
|
|
},
|
|
{
|
|
Name: "Title",
|
|
SchemaName: "title",
|
|
},
|
|
{
|
|
Name: "Performer",
|
|
SchemaName: "performer",
|
|
},
|
|
}
|
|
return typ
|
|
}
|
|
|
|
// Encode implements bin.Encoder.
|
|
func (d *DocumentAttributeAudio45) Encode(b *bin.Buffer) error {
|
|
if d == nil {
|
|
return fmt.Errorf("can't encode documentAttributeAudio45#ded218e0 as nil")
|
|
}
|
|
b.PutID(DocumentAttributeAudio45TypeID)
|
|
return d.EncodeBare(b)
|
|
}
|
|
|
|
// EncodeBare implements bin.BareEncoder.
|
|
func (d *DocumentAttributeAudio45) EncodeBare(b *bin.Buffer) error {
|
|
if d == nil {
|
|
return fmt.Errorf("can't encode documentAttributeAudio45#ded218e0 as nil")
|
|
}
|
|
b.PutInt(d.Duration)
|
|
b.PutString(d.Title)
|
|
b.PutString(d.Performer)
|
|
return nil
|
|
}
|
|
|
|
// Decode implements bin.Decoder.
|
|
func (d *DocumentAttributeAudio45) Decode(b *bin.Buffer) error {
|
|
if d == nil {
|
|
return fmt.Errorf("can't decode documentAttributeAudio45#ded218e0 to nil")
|
|
}
|
|
if err := b.ConsumeID(DocumentAttributeAudio45TypeID); err != nil {
|
|
return fmt.Errorf("unable to decode documentAttributeAudio45#ded218e0: %w", err)
|
|
}
|
|
return d.DecodeBare(b)
|
|
}
|
|
|
|
// DecodeBare implements bin.BareDecoder.
|
|
func (d *DocumentAttributeAudio45) DecodeBare(b *bin.Buffer) error {
|
|
if d == nil {
|
|
return fmt.Errorf("can't decode documentAttributeAudio45#ded218e0 to nil")
|
|
}
|
|
{
|
|
value, err := b.Int()
|
|
if err != nil {
|
|
return fmt.Errorf("unable to decode documentAttributeAudio45#ded218e0: field duration: %w", err)
|
|
}
|
|
d.Duration = value
|
|
}
|
|
{
|
|
value, err := b.String()
|
|
if err != nil {
|
|
return fmt.Errorf("unable to decode documentAttributeAudio45#ded218e0: field title: %w", err)
|
|
}
|
|
d.Title = value
|
|
}
|
|
{
|
|
value, err := b.String()
|
|
if err != nil {
|
|
return fmt.Errorf("unable to decode documentAttributeAudio45#ded218e0: field performer: %w", err)
|
|
}
|
|
d.Performer = value
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// GetDuration returns value of Duration field.
|
|
func (d *DocumentAttributeAudio45) GetDuration() (value int) {
|
|
if d == nil {
|
|
return
|
|
}
|
|
return d.Duration
|
|
}
|
|
|
|
// GetTitle returns value of Title field.
|
|
func (d *DocumentAttributeAudio45) GetTitle() (value string) {
|
|
if d == nil {
|
|
return
|
|
}
|
|
return d.Title
|
|
}
|
|
|
|
// GetPerformer returns value of Performer field.
|
|
func (d *DocumentAttributeAudio45) GetPerformer() (value string) {
|
|
if d == nil {
|
|
return
|
|
}
|
|
return d.Performer
|
|
}
|
|
|
|
// DocumentAttributeSticker represents TL type `documentAttributeSticker#3a556302`.
|
|
// Defines a sticker
|
|
//
|
|
// See https://core.telegram.org/constructor/documentAttributeSticker for reference.
|
|
type DocumentAttributeSticker struct {
|
|
// Alternative emoji representation of sticker
|
|
Alt string
|
|
// Associated stickerset
|
|
Stickerset InputStickerSetClass
|
|
}
|
|
|
|
// DocumentAttributeStickerTypeID is TL type id of DocumentAttributeSticker.
|
|
const DocumentAttributeStickerTypeID = 0x3a556302
|
|
|
|
// construct implements constructor of DocumentAttributeClass.
|
|
func (d DocumentAttributeSticker) construct() DocumentAttributeClass { return &d }
|
|
|
|
// Ensuring interfaces in compile-time for DocumentAttributeSticker.
|
|
var (
|
|
_ bin.Encoder = &DocumentAttributeSticker{}
|
|
_ bin.Decoder = &DocumentAttributeSticker{}
|
|
_ bin.BareEncoder = &DocumentAttributeSticker{}
|
|
_ bin.BareDecoder = &DocumentAttributeSticker{}
|
|
|
|
_ DocumentAttributeClass = &DocumentAttributeSticker{}
|
|
)
|
|
|
|
func (d *DocumentAttributeSticker) Zero() bool {
|
|
if d == nil {
|
|
return true
|
|
}
|
|
if !(d.Alt == "") {
|
|
return false
|
|
}
|
|
if !(d.Stickerset == nil) {
|
|
return false
|
|
}
|
|
|
|
return true
|
|
}
|
|
|
|
// String implements fmt.Stringer.
|
|
func (d *DocumentAttributeSticker) String() string {
|
|
if d == nil {
|
|
return "DocumentAttributeSticker(nil)"
|
|
}
|
|
type Alias DocumentAttributeSticker
|
|
return fmt.Sprintf("DocumentAttributeSticker%+v", Alias(*d))
|
|
}
|
|
|
|
// TypeID returns type id in TL schema.
|
|
//
|
|
// See https://core.telegram.org/mtproto/TL-tl#remarks.
|
|
func (*DocumentAttributeSticker) TypeID() uint32 {
|
|
return DocumentAttributeStickerTypeID
|
|
}
|
|
|
|
// TypeName returns name of type in TL schema.
|
|
func (*DocumentAttributeSticker) TypeName() string {
|
|
return "documentAttributeSticker"
|
|
}
|
|
|
|
// TypeInfo returns info about TL type.
|
|
func (d *DocumentAttributeSticker) TypeInfo() tdp.Type {
|
|
typ := tdp.Type{
|
|
Name: "documentAttributeSticker",
|
|
ID: DocumentAttributeStickerTypeID,
|
|
}
|
|
if d == nil {
|
|
typ.Null = true
|
|
return typ
|
|
}
|
|
typ.Fields = []tdp.Field{
|
|
{
|
|
Name: "Alt",
|
|
SchemaName: "alt",
|
|
},
|
|
{
|
|
Name: "Stickerset",
|
|
SchemaName: "stickerset",
|
|
},
|
|
}
|
|
return typ
|
|
}
|
|
|
|
// Encode implements bin.Encoder.
|
|
func (d *DocumentAttributeSticker) Encode(b *bin.Buffer) error {
|
|
if d == nil {
|
|
return fmt.Errorf("can't encode documentAttributeSticker#3a556302 as nil")
|
|
}
|
|
b.PutID(DocumentAttributeStickerTypeID)
|
|
return d.EncodeBare(b)
|
|
}
|
|
|
|
// EncodeBare implements bin.BareEncoder.
|
|
func (d *DocumentAttributeSticker) EncodeBare(b *bin.Buffer) error {
|
|
if d == nil {
|
|
return fmt.Errorf("can't encode documentAttributeSticker#3a556302 as nil")
|
|
}
|
|
b.PutString(d.Alt)
|
|
if d.Stickerset == nil {
|
|
return fmt.Errorf("unable to encode documentAttributeSticker#3a556302: field stickerset is nil")
|
|
}
|
|
if err := d.Stickerset.Encode(b); err != nil {
|
|
return fmt.Errorf("unable to encode documentAttributeSticker#3a556302: field stickerset: %w", err)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// Decode implements bin.Decoder.
|
|
func (d *DocumentAttributeSticker) Decode(b *bin.Buffer) error {
|
|
if d == nil {
|
|
return fmt.Errorf("can't decode documentAttributeSticker#3a556302 to nil")
|
|
}
|
|
if err := b.ConsumeID(DocumentAttributeStickerTypeID); err != nil {
|
|
return fmt.Errorf("unable to decode documentAttributeSticker#3a556302: %w", err)
|
|
}
|
|
return d.DecodeBare(b)
|
|
}
|
|
|
|
// DecodeBare implements bin.BareDecoder.
|
|
func (d *DocumentAttributeSticker) DecodeBare(b *bin.Buffer) error {
|
|
if d == nil {
|
|
return fmt.Errorf("can't decode documentAttributeSticker#3a556302 to nil")
|
|
}
|
|
{
|
|
value, err := b.String()
|
|
if err != nil {
|
|
return fmt.Errorf("unable to decode documentAttributeSticker#3a556302: field alt: %w", err)
|
|
}
|
|
d.Alt = value
|
|
}
|
|
{
|
|
value, err := DecodeInputStickerSet(b)
|
|
if err != nil {
|
|
return fmt.Errorf("unable to decode documentAttributeSticker#3a556302: field stickerset: %w", err)
|
|
}
|
|
d.Stickerset = value
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// GetAlt returns value of Alt field.
|
|
func (d *DocumentAttributeSticker) GetAlt() (value string) {
|
|
if d == nil {
|
|
return
|
|
}
|
|
return d.Alt
|
|
}
|
|
|
|
// GetStickerset returns value of Stickerset field.
|
|
func (d *DocumentAttributeSticker) GetStickerset() (value InputStickerSetClass) {
|
|
if d == nil {
|
|
return
|
|
}
|
|
return d.Stickerset
|
|
}
|
|
|
|
// DocumentAttributeAudio represents TL type `documentAttributeAudio#9852f9c6`.
|
|
// Represents an audio file
|
|
//
|
|
// See https://core.telegram.org/constructor/documentAttributeAudio for reference.
|
|
type DocumentAttributeAudio struct {
|
|
// Flags, see TL conditional fields¹
|
|
//
|
|
// Links:
|
|
// 1) https://core.telegram.org/mtproto/TL-combinators#conditional-fields
|
|
Flags bin.Fields
|
|
// Whether this is a voice message
|
|
Voice bool
|
|
// Duration in seconds
|
|
Duration int
|
|
// Name of song
|
|
//
|
|
// Use SetTitle and GetTitle helpers.
|
|
Title string
|
|
// Performer
|
|
//
|
|
// Use SetPerformer and GetPerformer helpers.
|
|
Performer string
|
|
// Waveform: consists in a series of bitpacked 5-bit values. Example implementation:
|
|
// android¹.
|
|
//
|
|
// Links:
|
|
// 1) https://github.com/DrKLO/Telegram/blob/96dce2c9aabc33b87db61d830aa087b6b03fe397/TMessagesProj/jni/audio.c#L546
|
|
//
|
|
// Use SetWaveform and GetWaveform helpers.
|
|
Waveform []byte
|
|
}
|
|
|
|
// DocumentAttributeAudioTypeID is TL type id of DocumentAttributeAudio.
|
|
const DocumentAttributeAudioTypeID = 0x9852f9c6
|
|
|
|
// construct implements constructor of DocumentAttributeClass.
|
|
func (d DocumentAttributeAudio) construct() DocumentAttributeClass { return &d }
|
|
|
|
// Ensuring interfaces in compile-time for DocumentAttributeAudio.
|
|
var (
|
|
_ bin.Encoder = &DocumentAttributeAudio{}
|
|
_ bin.Decoder = &DocumentAttributeAudio{}
|
|
_ bin.BareEncoder = &DocumentAttributeAudio{}
|
|
_ bin.BareDecoder = &DocumentAttributeAudio{}
|
|
|
|
_ DocumentAttributeClass = &DocumentAttributeAudio{}
|
|
)
|
|
|
|
func (d *DocumentAttributeAudio) Zero() bool {
|
|
if d == nil {
|
|
return true
|
|
}
|
|
if !(d.Flags.Zero()) {
|
|
return false
|
|
}
|
|
if !(d.Voice == false) {
|
|
return false
|
|
}
|
|
if !(d.Duration == 0) {
|
|
return false
|
|
}
|
|
if !(d.Title == "") {
|
|
return false
|
|
}
|
|
if !(d.Performer == "") {
|
|
return false
|
|
}
|
|
if !(d.Waveform == nil) {
|
|
return false
|
|
}
|
|
|
|
return true
|
|
}
|
|
|
|
// String implements fmt.Stringer.
|
|
func (d *DocumentAttributeAudio) String() string {
|
|
if d == nil {
|
|
return "DocumentAttributeAudio(nil)"
|
|
}
|
|
type Alias DocumentAttributeAudio
|
|
return fmt.Sprintf("DocumentAttributeAudio%+v", Alias(*d))
|
|
}
|
|
|
|
// TypeID returns type id in TL schema.
|
|
//
|
|
// See https://core.telegram.org/mtproto/TL-tl#remarks.
|
|
func (*DocumentAttributeAudio) TypeID() uint32 {
|
|
return DocumentAttributeAudioTypeID
|
|
}
|
|
|
|
// TypeName returns name of type in TL schema.
|
|
func (*DocumentAttributeAudio) TypeName() string {
|
|
return "documentAttributeAudio"
|
|
}
|
|
|
|
// TypeInfo returns info about TL type.
|
|
func (d *DocumentAttributeAudio) TypeInfo() tdp.Type {
|
|
typ := tdp.Type{
|
|
Name: "documentAttributeAudio",
|
|
ID: DocumentAttributeAudioTypeID,
|
|
}
|
|
if d == nil {
|
|
typ.Null = true
|
|
return typ
|
|
}
|
|
typ.Fields = []tdp.Field{
|
|
{
|
|
Name: "Voice",
|
|
SchemaName: "voice",
|
|
Null: !d.Flags.Has(10),
|
|
},
|
|
{
|
|
Name: "Duration",
|
|
SchemaName: "duration",
|
|
},
|
|
{
|
|
Name: "Title",
|
|
SchemaName: "title",
|
|
Null: !d.Flags.Has(0),
|
|
},
|
|
{
|
|
Name: "Performer",
|
|
SchemaName: "performer",
|
|
Null: !d.Flags.Has(1),
|
|
},
|
|
{
|
|
Name: "Waveform",
|
|
SchemaName: "waveform",
|
|
Null: !d.Flags.Has(2),
|
|
},
|
|
}
|
|
return typ
|
|
}
|
|
|
|
// SetFlags sets flags for non-zero fields.
|
|
func (d *DocumentAttributeAudio) SetFlags() {
|
|
if !(d.Voice == false) {
|
|
d.Flags.Set(10)
|
|
}
|
|
if !(d.Title == "") {
|
|
d.Flags.Set(0)
|
|
}
|
|
if !(d.Performer == "") {
|
|
d.Flags.Set(1)
|
|
}
|
|
if !(d.Waveform == nil) {
|
|
d.Flags.Set(2)
|
|
}
|
|
}
|
|
|
|
// Encode implements bin.Encoder.
|
|
func (d *DocumentAttributeAudio) Encode(b *bin.Buffer) error {
|
|
if d == nil {
|
|
return fmt.Errorf("can't encode documentAttributeAudio#9852f9c6 as nil")
|
|
}
|
|
b.PutID(DocumentAttributeAudioTypeID)
|
|
return d.EncodeBare(b)
|
|
}
|
|
|
|
// EncodeBare implements bin.BareEncoder.
|
|
func (d *DocumentAttributeAudio) EncodeBare(b *bin.Buffer) error {
|
|
if d == nil {
|
|
return fmt.Errorf("can't encode documentAttributeAudio#9852f9c6 as nil")
|
|
}
|
|
d.SetFlags()
|
|
if err := d.Flags.Encode(b); err != nil {
|
|
return fmt.Errorf("unable to encode documentAttributeAudio#9852f9c6: field flags: %w", err)
|
|
}
|
|
b.PutInt(d.Duration)
|
|
if d.Flags.Has(0) {
|
|
b.PutString(d.Title)
|
|
}
|
|
if d.Flags.Has(1) {
|
|
b.PutString(d.Performer)
|
|
}
|
|
if d.Flags.Has(2) {
|
|
b.PutBytes(d.Waveform)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// Decode implements bin.Decoder.
|
|
func (d *DocumentAttributeAudio) Decode(b *bin.Buffer) error {
|
|
if d == nil {
|
|
return fmt.Errorf("can't decode documentAttributeAudio#9852f9c6 to nil")
|
|
}
|
|
if err := b.ConsumeID(DocumentAttributeAudioTypeID); err != nil {
|
|
return fmt.Errorf("unable to decode documentAttributeAudio#9852f9c6: %w", err)
|
|
}
|
|
return d.DecodeBare(b)
|
|
}
|
|
|
|
// DecodeBare implements bin.BareDecoder.
|
|
func (d *DocumentAttributeAudio) DecodeBare(b *bin.Buffer) error {
|
|
if d == nil {
|
|
return fmt.Errorf("can't decode documentAttributeAudio#9852f9c6 to nil")
|
|
}
|
|
{
|
|
if err := d.Flags.Decode(b); err != nil {
|
|
return fmt.Errorf("unable to decode documentAttributeAudio#9852f9c6: field flags: %w", err)
|
|
}
|
|
}
|
|
d.Voice = d.Flags.Has(10)
|
|
{
|
|
value, err := b.Int()
|
|
if err != nil {
|
|
return fmt.Errorf("unable to decode documentAttributeAudio#9852f9c6: field duration: %w", err)
|
|
}
|
|
d.Duration = value
|
|
}
|
|
if d.Flags.Has(0) {
|
|
value, err := b.String()
|
|
if err != nil {
|
|
return fmt.Errorf("unable to decode documentAttributeAudio#9852f9c6: field title: %w", err)
|
|
}
|
|
d.Title = value
|
|
}
|
|
if d.Flags.Has(1) {
|
|
value, err := b.String()
|
|
if err != nil {
|
|
return fmt.Errorf("unable to decode documentAttributeAudio#9852f9c6: field performer: %w", err)
|
|
}
|
|
d.Performer = value
|
|
}
|
|
if d.Flags.Has(2) {
|
|
value, err := b.Bytes()
|
|
if err != nil {
|
|
return fmt.Errorf("unable to decode documentAttributeAudio#9852f9c6: field waveform: %w", err)
|
|
}
|
|
d.Waveform = value
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// SetVoice sets value of Voice conditional field.
|
|
func (d *DocumentAttributeAudio) SetVoice(value bool) {
|
|
if value {
|
|
d.Flags.Set(10)
|
|
d.Voice = true
|
|
} else {
|
|
d.Flags.Unset(10)
|
|
d.Voice = false
|
|
}
|
|
}
|
|
|
|
// GetVoice returns value of Voice conditional field.
|
|
func (d *DocumentAttributeAudio) GetVoice() (value bool) {
|
|
if d == nil {
|
|
return
|
|
}
|
|
return d.Flags.Has(10)
|
|
}
|
|
|
|
// GetDuration returns value of Duration field.
|
|
func (d *DocumentAttributeAudio) GetDuration() (value int) {
|
|
if d == nil {
|
|
return
|
|
}
|
|
return d.Duration
|
|
}
|
|
|
|
// SetTitle sets value of Title conditional field.
|
|
func (d *DocumentAttributeAudio) SetTitle(value string) {
|
|
d.Flags.Set(0)
|
|
d.Title = value
|
|
}
|
|
|
|
// GetTitle returns value of Title conditional field and
|
|
// boolean which is true if field was set.
|
|
func (d *DocumentAttributeAudio) GetTitle() (value string, ok bool) {
|
|
if d == nil {
|
|
return
|
|
}
|
|
if !d.Flags.Has(0) {
|
|
return value, false
|
|
}
|
|
return d.Title, true
|
|
}
|
|
|
|
// SetPerformer sets value of Performer conditional field.
|
|
func (d *DocumentAttributeAudio) SetPerformer(value string) {
|
|
d.Flags.Set(1)
|
|
d.Performer = value
|
|
}
|
|
|
|
// GetPerformer returns value of Performer conditional field and
|
|
// boolean which is true if field was set.
|
|
func (d *DocumentAttributeAudio) GetPerformer() (value string, ok bool) {
|
|
if d == nil {
|
|
return
|
|
}
|
|
if !d.Flags.Has(1) {
|
|
return value, false
|
|
}
|
|
return d.Performer, true
|
|
}
|
|
|
|
// SetWaveform sets value of Waveform conditional field.
|
|
func (d *DocumentAttributeAudio) SetWaveform(value []byte) {
|
|
d.Flags.Set(2)
|
|
d.Waveform = value
|
|
}
|
|
|
|
// GetWaveform returns value of Waveform conditional field and
|
|
// boolean which is true if field was set.
|
|
func (d *DocumentAttributeAudio) GetWaveform() (value []byte, ok bool) {
|
|
if d == nil {
|
|
return
|
|
}
|
|
if !d.Flags.Has(2) {
|
|
return value, false
|
|
}
|
|
return d.Waveform, true
|
|
}
|
|
|
|
// DocumentAttributeVideo represents TL type `documentAttributeVideo#ef02ce6`.
|
|
// Defines a video
|
|
//
|
|
// See https://core.telegram.org/constructor/documentAttributeVideo for reference.
|
|
type DocumentAttributeVideo struct {
|
|
// Flags, see TL conditional fields¹
|
|
//
|
|
// Links:
|
|
// 1) https://core.telegram.org/mtproto/TL-combinators#conditional-fields
|
|
Flags bin.Fields
|
|
// Whether this is a round video
|
|
RoundMessage bool
|
|
// Duration in seconds
|
|
Duration int
|
|
// Video width
|
|
W int
|
|
// Video height
|
|
H int
|
|
}
|
|
|
|
// DocumentAttributeVideoTypeID is TL type id of DocumentAttributeVideo.
|
|
const DocumentAttributeVideoTypeID = 0xef02ce6
|
|
|
|
// construct implements constructor of DocumentAttributeClass.
|
|
func (d DocumentAttributeVideo) construct() DocumentAttributeClass { return &d }
|
|
|
|
// Ensuring interfaces in compile-time for DocumentAttributeVideo.
|
|
var (
|
|
_ bin.Encoder = &DocumentAttributeVideo{}
|
|
_ bin.Decoder = &DocumentAttributeVideo{}
|
|
_ bin.BareEncoder = &DocumentAttributeVideo{}
|
|
_ bin.BareDecoder = &DocumentAttributeVideo{}
|
|
|
|
_ DocumentAttributeClass = &DocumentAttributeVideo{}
|
|
)
|
|
|
|
func (d *DocumentAttributeVideo) Zero() bool {
|
|
if d == nil {
|
|
return true
|
|
}
|
|
if !(d.Flags.Zero()) {
|
|
return false
|
|
}
|
|
if !(d.RoundMessage == false) {
|
|
return false
|
|
}
|
|
if !(d.Duration == 0) {
|
|
return false
|
|
}
|
|
if !(d.W == 0) {
|
|
return false
|
|
}
|
|
if !(d.H == 0) {
|
|
return false
|
|
}
|
|
|
|
return true
|
|
}
|
|
|
|
// String implements fmt.Stringer.
|
|
func (d *DocumentAttributeVideo) String() string {
|
|
if d == nil {
|
|
return "DocumentAttributeVideo(nil)"
|
|
}
|
|
type Alias DocumentAttributeVideo
|
|
return fmt.Sprintf("DocumentAttributeVideo%+v", Alias(*d))
|
|
}
|
|
|
|
// TypeID returns type id in TL schema.
|
|
//
|
|
// See https://core.telegram.org/mtproto/TL-tl#remarks.
|
|
func (*DocumentAttributeVideo) TypeID() uint32 {
|
|
return DocumentAttributeVideoTypeID
|
|
}
|
|
|
|
// TypeName returns name of type in TL schema.
|
|
func (*DocumentAttributeVideo) TypeName() string {
|
|
return "documentAttributeVideo"
|
|
}
|
|
|
|
// TypeInfo returns info about TL type.
|
|
func (d *DocumentAttributeVideo) TypeInfo() tdp.Type {
|
|
typ := tdp.Type{
|
|
Name: "documentAttributeVideo",
|
|
ID: DocumentAttributeVideoTypeID,
|
|
}
|
|
if d == nil {
|
|
typ.Null = true
|
|
return typ
|
|
}
|
|
typ.Fields = []tdp.Field{
|
|
{
|
|
Name: "RoundMessage",
|
|
SchemaName: "round_message",
|
|
Null: !d.Flags.Has(0),
|
|
},
|
|
{
|
|
Name: "Duration",
|
|
SchemaName: "duration",
|
|
},
|
|
{
|
|
Name: "W",
|
|
SchemaName: "w",
|
|
},
|
|
{
|
|
Name: "H",
|
|
SchemaName: "h",
|
|
},
|
|
}
|
|
return typ
|
|
}
|
|
|
|
// SetFlags sets flags for non-zero fields.
|
|
func (d *DocumentAttributeVideo) SetFlags() {
|
|
if !(d.RoundMessage == false) {
|
|
d.Flags.Set(0)
|
|
}
|
|
}
|
|
|
|
// Encode implements bin.Encoder.
|
|
func (d *DocumentAttributeVideo) Encode(b *bin.Buffer) error {
|
|
if d == nil {
|
|
return fmt.Errorf("can't encode documentAttributeVideo#ef02ce6 as nil")
|
|
}
|
|
b.PutID(DocumentAttributeVideoTypeID)
|
|
return d.EncodeBare(b)
|
|
}
|
|
|
|
// EncodeBare implements bin.BareEncoder.
|
|
func (d *DocumentAttributeVideo) EncodeBare(b *bin.Buffer) error {
|
|
if d == nil {
|
|
return fmt.Errorf("can't encode documentAttributeVideo#ef02ce6 as nil")
|
|
}
|
|
d.SetFlags()
|
|
if err := d.Flags.Encode(b); err != nil {
|
|
return fmt.Errorf("unable to encode documentAttributeVideo#ef02ce6: field flags: %w", err)
|
|
}
|
|
b.PutInt(d.Duration)
|
|
b.PutInt(d.W)
|
|
b.PutInt(d.H)
|
|
return nil
|
|
}
|
|
|
|
// Decode implements bin.Decoder.
|
|
func (d *DocumentAttributeVideo) Decode(b *bin.Buffer) error {
|
|
if d == nil {
|
|
return fmt.Errorf("can't decode documentAttributeVideo#ef02ce6 to nil")
|
|
}
|
|
if err := b.ConsumeID(DocumentAttributeVideoTypeID); err != nil {
|
|
return fmt.Errorf("unable to decode documentAttributeVideo#ef02ce6: %w", err)
|
|
}
|
|
return d.DecodeBare(b)
|
|
}
|
|
|
|
// DecodeBare implements bin.BareDecoder.
|
|
func (d *DocumentAttributeVideo) DecodeBare(b *bin.Buffer) error {
|
|
if d == nil {
|
|
return fmt.Errorf("can't decode documentAttributeVideo#ef02ce6 to nil")
|
|
}
|
|
{
|
|
if err := d.Flags.Decode(b); err != nil {
|
|
return fmt.Errorf("unable to decode documentAttributeVideo#ef02ce6: field flags: %w", err)
|
|
}
|
|
}
|
|
d.RoundMessage = d.Flags.Has(0)
|
|
{
|
|
value, err := b.Int()
|
|
if err != nil {
|
|
return fmt.Errorf("unable to decode documentAttributeVideo#ef02ce6: field duration: %w", err)
|
|
}
|
|
d.Duration = value
|
|
}
|
|
{
|
|
value, err := b.Int()
|
|
if err != nil {
|
|
return fmt.Errorf("unable to decode documentAttributeVideo#ef02ce6: field w: %w", err)
|
|
}
|
|
d.W = value
|
|
}
|
|
{
|
|
value, err := b.Int()
|
|
if err != nil {
|
|
return fmt.Errorf("unable to decode documentAttributeVideo#ef02ce6: field h: %w", err)
|
|
}
|
|
d.H = value
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// SetRoundMessage sets value of RoundMessage conditional field.
|
|
func (d *DocumentAttributeVideo) SetRoundMessage(value bool) {
|
|
if value {
|
|
d.Flags.Set(0)
|
|
d.RoundMessage = true
|
|
} else {
|
|
d.Flags.Unset(0)
|
|
d.RoundMessage = false
|
|
}
|
|
}
|
|
|
|
// GetRoundMessage returns value of RoundMessage conditional field.
|
|
func (d *DocumentAttributeVideo) GetRoundMessage() (value bool) {
|
|
if d == nil {
|
|
return
|
|
}
|
|
return d.Flags.Has(0)
|
|
}
|
|
|
|
// GetDuration returns value of Duration field.
|
|
func (d *DocumentAttributeVideo) GetDuration() (value int) {
|
|
if d == nil {
|
|
return
|
|
}
|
|
return d.Duration
|
|
}
|
|
|
|
// GetW returns value of W field.
|
|
func (d *DocumentAttributeVideo) GetW() (value int) {
|
|
if d == nil {
|
|
return
|
|
}
|
|
return d.W
|
|
}
|
|
|
|
// GetH returns value of H field.
|
|
func (d *DocumentAttributeVideo) GetH() (value int) {
|
|
if d == nil {
|
|
return
|
|
}
|
|
return d.H
|
|
}
|
|
|
|
// DocumentAttributeClassName is schema name of DocumentAttributeClass.
|
|
const DocumentAttributeClassName = "DocumentAttribute"
|
|
|
|
// DocumentAttributeClass represents DocumentAttribute generic type.
|
|
//
|
|
// See https://core.telegram.org/type/DocumentAttribute for reference.
|
|
//
|
|
// Example:
|
|
//
|
|
// g, err := e2e.DecodeDocumentAttribute(buf)
|
|
// if err != nil {
|
|
// panic(err)
|
|
// }
|
|
// switch v := g.(type) {
|
|
// case *e2e.DocumentAttributeImageSize: // documentAttributeImageSize#6c37c15c
|
|
// case *e2e.DocumentAttributeAnimated: // documentAttributeAnimated#11b58939
|
|
// case *e2e.DocumentAttributeSticker23: // documentAttributeSticker23#fb0a5727
|
|
// case *e2e.DocumentAttributeVideo23: // documentAttributeVideo23#5910cccb
|
|
// case *e2e.DocumentAttributeAudio23: // documentAttributeAudio23#51448e5
|
|
// case *e2e.DocumentAttributeFilename: // documentAttributeFilename#15590068
|
|
// case *e2e.DocumentAttributeAudio45: // documentAttributeAudio45#ded218e0
|
|
// case *e2e.DocumentAttributeSticker: // documentAttributeSticker#3a556302
|
|
// case *e2e.DocumentAttributeAudio: // documentAttributeAudio#9852f9c6
|
|
// case *e2e.DocumentAttributeVideo: // documentAttributeVideo#ef02ce6
|
|
// default: panic(v)
|
|
// }
|
|
type DocumentAttributeClass interface {
|
|
bin.Encoder
|
|
bin.Decoder
|
|
bin.BareEncoder
|
|
bin.BareDecoder
|
|
construct() DocumentAttributeClass
|
|
|
|
// 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
|
|
}
|
|
|
|
// DecodeDocumentAttribute implements binary de-serialization for DocumentAttributeClass.
|
|
func DecodeDocumentAttribute(buf *bin.Buffer) (DocumentAttributeClass, error) {
|
|
id, err := buf.PeekID()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
switch id {
|
|
case DocumentAttributeImageSizeTypeID:
|
|
// Decoding documentAttributeImageSize#6c37c15c.
|
|
v := DocumentAttributeImageSize{}
|
|
if err := v.Decode(buf); err != nil {
|
|
return nil, fmt.Errorf("unable to decode DocumentAttributeClass: %w", err)
|
|
}
|
|
return &v, nil
|
|
case DocumentAttributeAnimatedTypeID:
|
|
// Decoding documentAttributeAnimated#11b58939.
|
|
v := DocumentAttributeAnimated{}
|
|
if err := v.Decode(buf); err != nil {
|
|
return nil, fmt.Errorf("unable to decode DocumentAttributeClass: %w", err)
|
|
}
|
|
return &v, nil
|
|
case DocumentAttributeSticker23TypeID:
|
|
// Decoding documentAttributeSticker23#fb0a5727.
|
|
v := DocumentAttributeSticker23{}
|
|
if err := v.Decode(buf); err != nil {
|
|
return nil, fmt.Errorf("unable to decode DocumentAttributeClass: %w", err)
|
|
}
|
|
return &v, nil
|
|
case DocumentAttributeVideo23TypeID:
|
|
// Decoding documentAttributeVideo23#5910cccb.
|
|
v := DocumentAttributeVideo23{}
|
|
if err := v.Decode(buf); err != nil {
|
|
return nil, fmt.Errorf("unable to decode DocumentAttributeClass: %w", err)
|
|
}
|
|
return &v, nil
|
|
case DocumentAttributeAudio23TypeID:
|
|
// Decoding documentAttributeAudio23#51448e5.
|
|
v := DocumentAttributeAudio23{}
|
|
if err := v.Decode(buf); err != nil {
|
|
return nil, fmt.Errorf("unable to decode DocumentAttributeClass: %w", err)
|
|
}
|
|
return &v, nil
|
|
case DocumentAttributeFilenameTypeID:
|
|
// Decoding documentAttributeFilename#15590068.
|
|
v := DocumentAttributeFilename{}
|
|
if err := v.Decode(buf); err != nil {
|
|
return nil, fmt.Errorf("unable to decode DocumentAttributeClass: %w", err)
|
|
}
|
|
return &v, nil
|
|
case DocumentAttributeAudio45TypeID:
|
|
// Decoding documentAttributeAudio45#ded218e0.
|
|
v := DocumentAttributeAudio45{}
|
|
if err := v.Decode(buf); err != nil {
|
|
return nil, fmt.Errorf("unable to decode DocumentAttributeClass: %w", err)
|
|
}
|
|
return &v, nil
|
|
case DocumentAttributeStickerTypeID:
|
|
// Decoding documentAttributeSticker#3a556302.
|
|
v := DocumentAttributeSticker{}
|
|
if err := v.Decode(buf); err != nil {
|
|
return nil, fmt.Errorf("unable to decode DocumentAttributeClass: %w", err)
|
|
}
|
|
return &v, nil
|
|
case DocumentAttributeAudioTypeID:
|
|
// Decoding documentAttributeAudio#9852f9c6.
|
|
v := DocumentAttributeAudio{}
|
|
if err := v.Decode(buf); err != nil {
|
|
return nil, fmt.Errorf("unable to decode DocumentAttributeClass: %w", err)
|
|
}
|
|
return &v, nil
|
|
case DocumentAttributeVideoTypeID:
|
|
// Decoding documentAttributeVideo#ef02ce6.
|
|
v := DocumentAttributeVideo{}
|
|
if err := v.Decode(buf); err != nil {
|
|
return nil, fmt.Errorf("unable to decode DocumentAttributeClass: %w", err)
|
|
}
|
|
return &v, nil
|
|
default:
|
|
return nil, fmt.Errorf("unable to decode DocumentAttributeClass: %w", bin.NewUnexpectedID(id))
|
|
}
|
|
}
|
|
|
|
// DocumentAttribute boxes the DocumentAttributeClass providing a helper.
|
|
type DocumentAttributeBox struct {
|
|
DocumentAttribute DocumentAttributeClass
|
|
}
|
|
|
|
// Decode implements bin.Decoder for DocumentAttributeBox.
|
|
func (b *DocumentAttributeBox) Decode(buf *bin.Buffer) error {
|
|
if b == nil {
|
|
return fmt.Errorf("unable to decode DocumentAttributeBox to nil")
|
|
}
|
|
v, err := DecodeDocumentAttribute(buf)
|
|
if err != nil {
|
|
return fmt.Errorf("unable to decode boxed value: %w", err)
|
|
}
|
|
b.DocumentAttribute = v
|
|
return nil
|
|
}
|
|
|
|
// Encode implements bin.Encode for DocumentAttributeBox.
|
|
func (b *DocumentAttributeBox) Encode(buf *bin.Buffer) error {
|
|
if b == nil || b.DocumentAttribute == nil {
|
|
return fmt.Errorf("unable to encode DocumentAttributeClass as nil")
|
|
}
|
|
return b.DocumentAttribute.Encode(buf)
|
|
}
|