package tg
import (
"context"
"errors"
"fmt"
"sort"
"strings"
"go.uber.org/multierr"
"github.com/gotd/td/bin"
"github.com/gotd/td/tdjson"
"github.com/gotd/td/tdp"
"github.com/gotd/td/tgerr"
)
var (
_ = bin .Buffer {}
_ = context .Background ()
_ = fmt .Stringer (nil )
_ = strings .Builder {}
_ = errors .Is
_ = multierr .AppendInto
_ = sort .Ints
_ = tdp .Format
_ = tgerr .Error {}
_ = tdjson .Encoder {}
)
type PhotoEmpty struct {
ID int64
}
const PhotoEmptyTypeID = 0x2331b22d
func (p PhotoEmpty ) construct () PhotoClass { return &p }
var (
_ bin .Encoder = &PhotoEmpty {}
_ bin .Decoder = &PhotoEmpty {}
_ bin .BareEncoder = &PhotoEmpty {}
_ bin .BareDecoder = &PhotoEmpty {}
_ PhotoClass = &PhotoEmpty {}
)
func (p *PhotoEmpty ) Zero () bool {
if p == nil {
return true
}
if !(p .ID == 0 ) {
return false
}
return true
}
func (p *PhotoEmpty ) String () string {
if p == nil {
return "PhotoEmpty(nil)"
}
type Alias PhotoEmpty
return fmt .Sprintf ("PhotoEmpty%+v" , Alias (*p ))
}
func (p *PhotoEmpty ) FillFrom (from interface {
GetID () (value int64 )
}) {
p .ID = from .GetID ()
}
func (*PhotoEmpty ) TypeID () uint32 {
return PhotoEmptyTypeID
}
func (*PhotoEmpty ) TypeName () string {
return "photoEmpty"
}
func (p *PhotoEmpty ) TypeInfo () tdp .Type {
typ := tdp .Type {
Name : "photoEmpty" ,
ID : PhotoEmptyTypeID ,
}
if p == nil {
typ .Null = true
return typ
}
typ .Fields = []tdp .Field {
{
Name : "ID" ,
SchemaName : "id" ,
},
}
return typ
}
func (p *PhotoEmpty ) Encode (b *bin .Buffer ) error {
if p == nil {
return fmt .Errorf ("can't encode photoEmpty#2331b22d as nil" )
}
b .PutID (PhotoEmptyTypeID )
return p .EncodeBare (b )
}
func (p *PhotoEmpty ) EncodeBare (b *bin .Buffer ) error {
if p == nil {
return fmt .Errorf ("can't encode photoEmpty#2331b22d as nil" )
}
b .PutLong (p .ID )
return nil
}
func (p *PhotoEmpty ) Decode (b *bin .Buffer ) error {
if p == nil {
return fmt .Errorf ("can't decode photoEmpty#2331b22d to nil" )
}
if err := b .ConsumeID (PhotoEmptyTypeID ); err != nil {
return fmt .Errorf ("unable to decode photoEmpty#2331b22d: %w" , err )
}
return p .DecodeBare (b )
}
func (p *PhotoEmpty ) DecodeBare (b *bin .Buffer ) error {
if p == nil {
return fmt .Errorf ("can't decode photoEmpty#2331b22d to nil" )
}
{
value , err := b .Long ()
if err != nil {
return fmt .Errorf ("unable to decode photoEmpty#2331b22d: field id: %w" , err )
}
p .ID = value
}
return nil
}
func (p *PhotoEmpty ) GetID () (value int64 ) {
if p == nil {
return
}
return p .ID
}
type Photo struct {
Flags bin .Fields
HasStickers bool
ID int64
AccessHash int64
FileReference []byte
Date int
Sizes []PhotoSizeClass
VideoSizes []VideoSizeClass
DCID int
}
const PhotoTypeID = 0xfb197a65
func (p Photo ) construct () PhotoClass { return &p }
var (
_ bin .Encoder = &Photo {}
_ bin .Decoder = &Photo {}
_ bin .BareEncoder = &Photo {}
_ bin .BareDecoder = &Photo {}
_ PhotoClass = &Photo {}
)
func (p *Photo ) Zero () bool {
if p == nil {
return true
}
if !(p .Flags .Zero ()) {
return false
}
if !(p .HasStickers == false ) {
return false
}
if !(p .ID == 0 ) {
return false
}
if !(p .AccessHash == 0 ) {
return false
}
if !(p .FileReference == nil ) {
return false
}
if !(p .Date == 0 ) {
return false
}
if !(p .Sizes == nil ) {
return false
}
if !(p .VideoSizes == nil ) {
return false
}
if !(p .DCID == 0 ) {
return false
}
return true
}
func (p *Photo ) String () string {
if p == nil {
return "Photo(nil)"
}
type Alias Photo
return fmt .Sprintf ("Photo%+v" , Alias (*p ))
}
func (p *Photo ) FillFrom (from interface {
GetHasStickers () (value bool )
GetID () (value int64 )
GetAccessHash () (value int64 )
GetFileReference () (value []byte )
GetDate () (value int )
GetSizes () (value []PhotoSizeClass )
GetVideoSizes () (value []VideoSizeClass , ok bool )
GetDCID () (value int )
}) {
p .HasStickers = from .GetHasStickers ()
p .ID = from .GetID ()
p .AccessHash = from .GetAccessHash ()
p .FileReference = from .GetFileReference ()
p .Date = from .GetDate ()
p .Sizes = from .GetSizes ()
if val , ok := from .GetVideoSizes (); ok {
p .VideoSizes = val
}
p .DCID = from .GetDCID ()
}
func (*Photo ) TypeID () uint32 {
return PhotoTypeID
}
func (*Photo ) TypeName () string {
return "photo"
}
func (p *Photo ) TypeInfo () tdp .Type {
typ := tdp .Type {
Name : "photo" ,
ID : PhotoTypeID ,
}
if p == nil {
typ .Null = true
return typ
}
typ .Fields = []tdp .Field {
{
Name : "HasStickers" ,
SchemaName : "has_stickers" ,
Null : !p .Flags .Has (0 ),
},
{
Name : "ID" ,
SchemaName : "id" ,
},
{
Name : "AccessHash" ,
SchemaName : "access_hash" ,
},
{
Name : "FileReference" ,
SchemaName : "file_reference" ,
},
{
Name : "Date" ,
SchemaName : "date" ,
},
{
Name : "Sizes" ,
SchemaName : "sizes" ,
},
{
Name : "VideoSizes" ,
SchemaName : "video_sizes" ,
Null : !p .Flags .Has (1 ),
},
{
Name : "DCID" ,
SchemaName : "dc_id" ,
},
}
return typ
}
func (p *Photo ) SetFlags () {
if !(p .HasStickers == false ) {
p .Flags .Set (0 )
}
if !(p .VideoSizes == nil ) {
p .Flags .Set (1 )
}
}
func (p *Photo ) Encode (b *bin .Buffer ) error {
if p == nil {
return fmt .Errorf ("can't encode photo#fb197a65 as nil" )
}
b .PutID (PhotoTypeID )
return p .EncodeBare (b )
}
func (p *Photo ) EncodeBare (b *bin .Buffer ) error {
if p == nil {
return fmt .Errorf ("can't encode photo#fb197a65 as nil" )
}
p .SetFlags ()
if err := p .Flags .Encode (b ); err != nil {
return fmt .Errorf ("unable to encode photo#fb197a65: field flags: %w" , err )
}
b .PutLong (p .ID )
b .PutLong (p .AccessHash )
b .PutBytes (p .FileReference )
b .PutInt (p .Date )
b .PutVectorHeader (len (p .Sizes ))
for idx , v := range p .Sizes {
if v == nil {
return fmt .Errorf ("unable to encode photo#fb197a65: field sizes element with index %d is nil" , idx )
}
if err := v .Encode (b ); err != nil {
return fmt .Errorf ("unable to encode photo#fb197a65: field sizes element with index %d: %w" , idx , err )
}
}
if p .Flags .Has (1 ) {
b .PutVectorHeader (len (p .VideoSizes ))
for idx , v := range p .VideoSizes {
if v == nil {
return fmt .Errorf ("unable to encode photo#fb197a65: field video_sizes element with index %d is nil" , idx )
}
if err := v .Encode (b ); err != nil {
return fmt .Errorf ("unable to encode photo#fb197a65: field video_sizes element with index %d: %w" , idx , err )
}
}
}
b .PutInt (p .DCID )
return nil
}
func (p *Photo ) Decode (b *bin .Buffer ) error {
if p == nil {
return fmt .Errorf ("can't decode photo#fb197a65 to nil" )
}
if err := b .ConsumeID (PhotoTypeID ); err != nil {
return fmt .Errorf ("unable to decode photo#fb197a65: %w" , err )
}
return p .DecodeBare (b )
}
func (p *Photo ) DecodeBare (b *bin .Buffer ) error {
if p == nil {
return fmt .Errorf ("can't decode photo#fb197a65 to nil" )
}
{
if err := p .Flags .Decode (b ); err != nil {
return fmt .Errorf ("unable to decode photo#fb197a65: field flags: %w" , err )
}
}
p .HasStickers = p .Flags .Has (0 )
{
value , err := b .Long ()
if err != nil {
return fmt .Errorf ("unable to decode photo#fb197a65: field id: %w" , err )
}
p .ID = value
}
{
value , err := b .Long ()
if err != nil {
return fmt .Errorf ("unable to decode photo#fb197a65: field access_hash: %w" , err )
}
p .AccessHash = value
}
{
value , err := b .Bytes ()
if err != nil {
return fmt .Errorf ("unable to decode photo#fb197a65: field file_reference: %w" , err )
}
p .FileReference = value
}
{
value , err := b .Int ()
if err != nil {
return fmt .Errorf ("unable to decode photo#fb197a65: field date: %w" , err )
}
p .Date = value
}
{
headerLen , err := b .VectorHeader ()
if err != nil {
return fmt .Errorf ("unable to decode photo#fb197a65: field sizes: %w" , err )
}
if headerLen > 0 {
p .Sizes = make ([]PhotoSizeClass , 0 , headerLen %bin .PreallocateLimit )
}
for idx := 0 ; idx < headerLen ; idx ++ {
value , err := DecodePhotoSize (b )
if err != nil {
return fmt .Errorf ("unable to decode photo#fb197a65: field sizes: %w" , err )
}
p .Sizes = append (p .Sizes , value )
}
}
if p .Flags .Has (1 ) {
headerLen , err := b .VectorHeader ()
if err != nil {
return fmt .Errorf ("unable to decode photo#fb197a65: field video_sizes: %w" , err )
}
if headerLen > 0 {
p .VideoSizes = make ([]VideoSizeClass , 0 , headerLen %bin .PreallocateLimit )
}
for idx := 0 ; idx < headerLen ; idx ++ {
value , err := DecodeVideoSize (b )
if err != nil {
return fmt .Errorf ("unable to decode photo#fb197a65: field video_sizes: %w" , err )
}
p .VideoSizes = append (p .VideoSizes , value )
}
}
{
value , err := b .Int ()
if err != nil {
return fmt .Errorf ("unable to decode photo#fb197a65: field dc_id: %w" , err )
}
p .DCID = value
}
return nil
}
func (p *Photo ) SetHasStickers (value bool ) {
if value {
p .Flags .Set (0 )
p .HasStickers = true
} else {
p .Flags .Unset (0 )
p .HasStickers = false
}
}
func (p *Photo ) GetHasStickers () (value bool ) {
if p == nil {
return
}
return p .Flags .Has (0 )
}
func (p *Photo ) GetID () (value int64 ) {
if p == nil {
return
}
return p .ID
}
func (p *Photo ) GetAccessHash () (value int64 ) {
if p == nil {
return
}
return p .AccessHash
}
func (p *Photo ) GetFileReference () (value []byte ) {
if p == nil {
return
}
return p .FileReference
}
func (p *Photo ) GetDate () (value int ) {
if p == nil {
return
}
return p .Date
}
func (p *Photo ) GetSizes () (value []PhotoSizeClass ) {
if p == nil {
return
}
return p .Sizes
}
func (p *Photo ) SetVideoSizes (value []VideoSizeClass ) {
p .Flags .Set (1 )
p .VideoSizes = value
}
func (p *Photo ) GetVideoSizes () (value []VideoSizeClass , ok bool ) {
if p == nil {
return
}
if !p .Flags .Has (1 ) {
return value , false
}
return p .VideoSizes , true
}
func (p *Photo ) GetDCID () (value int ) {
if p == nil {
return
}
return p .DCID
}
func (p *Photo ) MapSizes () (value PhotoSizeClassArray ) {
return PhotoSizeClassArray (p .Sizes )
}
func (p *Photo ) MapVideoSizes () (value VideoSizeClassArray , ok bool ) {
if !p .Flags .Has (1 ) {
return value , false
}
return VideoSizeClassArray (p .VideoSizes ), true
}
const PhotoClassName = "Photo"
type PhotoClass interface {
bin .Encoder
bin .Decoder
bin .BareEncoder
bin .BareDecoder
construct () PhotoClass
TypeID () uint32
TypeName () string
String () string
Zero () bool
GetID () (value int64 )
AsNotEmpty () (*Photo , bool )
}
func (p *Photo ) AsInput () *InputPhoto {
value := new (InputPhoto )
value .ID = p .GetID ()
value .AccessHash = p .GetAccessHash ()
value .FileReference = p .GetFileReference ()
return value
}
func (p *PhotoEmpty ) AsNotEmpty () (*Photo , bool ) {
return nil , false
}
func (p *Photo ) AsNotEmpty () (*Photo , bool ) {
return p , true
}
func DecodePhoto (buf *bin .Buffer ) (PhotoClass , error ) {
id , err := buf .PeekID ()
if err != nil {
return nil , err
}
switch id {
case PhotoEmptyTypeID :
v := PhotoEmpty {}
if err := v .Decode (buf ); err != nil {
return nil , fmt .Errorf ("unable to decode PhotoClass: %w" , err )
}
return &v , nil
case PhotoTypeID :
v := Photo {}
if err := v .Decode (buf ); err != nil {
return nil , fmt .Errorf ("unable to decode PhotoClass: %w" , err )
}
return &v , nil
default :
return nil , fmt .Errorf ("unable to decode PhotoClass: %w" , bin .NewUnexpectedID (id ))
}
}
type PhotoBox struct {
Photo PhotoClass
}
func (b *PhotoBox ) Decode (buf *bin .Buffer ) error {
if b == nil {
return fmt .Errorf ("unable to decode PhotoBox to nil" )
}
v , err := DecodePhoto (buf )
if err != nil {
return fmt .Errorf ("unable to decode boxed value: %w" , err )
}
b .Photo = v
return nil
}
func (b *PhotoBox ) Encode (buf *bin .Buffer ) error {
if b == nil || b .Photo == nil {
return fmt .Errorf ("unable to encode PhotoClass as nil" )
}
return b .Photo .Encode (buf )
}
The pages are generated with Golds v0.6.7 . (GOOS=linux GOARCH=amd64)
Golds is a Go 101 project developed by Tapir Liu .
PR and bug reports are welcome and can be submitted to the issue list .
Please follow @Go100and1 (reachable from the left QR code) to get the latest news of Golds .