Files
mautrix-telegram/pkg/gotd/tg/tl_code_settings_gen.go
T
2025-06-27 20:03:37 -07:00

546 lines
13 KiB
Go

// 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{}
)
// CodeSettings represents TL type `codeSettings#ad253d78`.
// Settings used by telegram servers for sending the confirm code.
// Example implementations: telegram for android¹, tdlib².
//
// Links:
// 1. https://github.com/DrKLO/Telegram/blob/master/TMessagesProj/src/main/java/org/telegram/ui/LoginActivity.java
// 2. https://github.com/tdlib/td/tree/master/td/telegram/SendCodeHelper.cpp
//
// See https://core.telegram.org/constructor/codeSettings for reference.
type CodeSettings struct {
// Flags, see TL conditional fields¹
//
// Links:
// 1) https://core.telegram.org/mtproto/TL-combinators#conditional-fields
Flags bin.Fields
// Whether to allow phone verification via phone calls¹.
//
// Links:
// 1) https://core.telegram.org/api/auth
AllowFlashcall bool
// Pass true if the phone number is used on the current device. Ignored if
// allow_flashcall is not set.
CurrentNumber bool
// If a token that will be included in eventually sent SMSs is required: required in
// newer versions of android, to use the android SMS receiver APIs¹
//
// Links:
// 1) https://developers.google.com/identity/sms-retriever/overview
AllowAppHash bool
// Whether this device supports receiving the code using the auth.codeTypeMissedCall¹
// method
//
// Links:
// 1) https://core.telegram.org/constructor/auth.codeTypeMissedCall
AllowMissedCall bool
// Whether Firebase auth is supported
AllowFirebase bool
// Set this flag if there is a SIM card in the current device, but it is not possible to
// check whether the specified phone number matches the SIM's phone number.
UnknownNumber bool
// Previously stored future auth tokens, see the documentation for more info »¹
//
// Links:
// 1) https://core.telegram.org/api/auth#future-auth-tokens
//
// Use SetLogoutTokens and GetLogoutTokens helpers.
LogoutTokens [][]byte
// Used only by official iOS apps for Firebase auth: device token for apple push.
//
// Use SetToken and GetToken helpers.
Token string
// Used only by official iOS apps for firebase auth: whether a sandbox-certificate will
// be used during transmission of the push notification.
//
// Use SetAppSandbox and GetAppSandbox helpers.
AppSandbox bool
}
// CodeSettingsTypeID is TL type id of CodeSettings.
const CodeSettingsTypeID = 0xad253d78
// Ensuring interfaces in compile-time for CodeSettings.
var (
_ bin.Encoder = &CodeSettings{}
_ bin.Decoder = &CodeSettings{}
_ bin.BareEncoder = &CodeSettings{}
_ bin.BareDecoder = &CodeSettings{}
)
func (c *CodeSettings) Zero() bool {
if c == nil {
return true
}
if !(c.Flags.Zero()) {
return false
}
if !(c.AllowFlashcall == false) {
return false
}
if !(c.CurrentNumber == false) {
return false
}
if !(c.AllowAppHash == false) {
return false
}
if !(c.AllowMissedCall == false) {
return false
}
if !(c.AllowFirebase == false) {
return false
}
if !(c.UnknownNumber == false) {
return false
}
if !(c.LogoutTokens == nil) {
return false
}
if !(c.Token == "") {
return false
}
if !(c.AppSandbox == false) {
return false
}
return true
}
// String implements fmt.Stringer.
func (c *CodeSettings) String() string {
if c == nil {
return "CodeSettings(nil)"
}
type Alias CodeSettings
return fmt.Sprintf("CodeSettings%+v", Alias(*c))
}
// FillFrom fills CodeSettings from given interface.
func (c *CodeSettings) FillFrom(from interface {
GetAllowFlashcall() (value bool)
GetCurrentNumber() (value bool)
GetAllowAppHash() (value bool)
GetAllowMissedCall() (value bool)
GetAllowFirebase() (value bool)
GetUnknownNumber() (value bool)
GetLogoutTokens() (value [][]byte, ok bool)
GetToken() (value string, ok bool)
GetAppSandbox() (value bool, ok bool)
}) {
c.AllowFlashcall = from.GetAllowFlashcall()
c.CurrentNumber = from.GetCurrentNumber()
c.AllowAppHash = from.GetAllowAppHash()
c.AllowMissedCall = from.GetAllowMissedCall()
c.AllowFirebase = from.GetAllowFirebase()
c.UnknownNumber = from.GetUnknownNumber()
if val, ok := from.GetLogoutTokens(); ok {
c.LogoutTokens = val
}
if val, ok := from.GetToken(); ok {
c.Token = val
}
if val, ok := from.GetAppSandbox(); ok {
c.AppSandbox = val
}
}
// TypeID returns type id in TL schema.
//
// See https://core.telegram.org/mtproto/TL-tl#remarks.
func (*CodeSettings) TypeID() uint32 {
return CodeSettingsTypeID
}
// TypeName returns name of type in TL schema.
func (*CodeSettings) TypeName() string {
return "codeSettings"
}
// TypeInfo returns info about TL type.
func (c *CodeSettings) TypeInfo() tdp.Type {
typ := tdp.Type{
Name: "codeSettings",
ID: CodeSettingsTypeID,
}
if c == nil {
typ.Null = true
return typ
}
typ.Fields = []tdp.Field{
{
Name: "AllowFlashcall",
SchemaName: "allow_flashcall",
Null: !c.Flags.Has(0),
},
{
Name: "CurrentNumber",
SchemaName: "current_number",
Null: !c.Flags.Has(1),
},
{
Name: "AllowAppHash",
SchemaName: "allow_app_hash",
Null: !c.Flags.Has(4),
},
{
Name: "AllowMissedCall",
SchemaName: "allow_missed_call",
Null: !c.Flags.Has(5),
},
{
Name: "AllowFirebase",
SchemaName: "allow_firebase",
Null: !c.Flags.Has(7),
},
{
Name: "UnknownNumber",
SchemaName: "unknown_number",
Null: !c.Flags.Has(9),
},
{
Name: "LogoutTokens",
SchemaName: "logout_tokens",
Null: !c.Flags.Has(6),
},
{
Name: "Token",
SchemaName: "token",
Null: !c.Flags.Has(8),
},
{
Name: "AppSandbox",
SchemaName: "app_sandbox",
Null: !c.Flags.Has(8),
},
}
return typ
}
// SetFlags sets flags for non-zero fields.
func (c *CodeSettings) SetFlags() {
if !(c.AllowFlashcall == false) {
c.Flags.Set(0)
}
if !(c.CurrentNumber == false) {
c.Flags.Set(1)
}
if !(c.AllowAppHash == false) {
c.Flags.Set(4)
}
if !(c.AllowMissedCall == false) {
c.Flags.Set(5)
}
if !(c.AllowFirebase == false) {
c.Flags.Set(7)
}
if !(c.UnknownNumber == false) {
c.Flags.Set(9)
}
if !(c.LogoutTokens == nil) {
c.Flags.Set(6)
}
if !(c.Token == "") {
c.Flags.Set(8)
}
if !(c.AppSandbox == false) {
c.Flags.Set(8)
}
}
// Encode implements bin.Encoder.
func (c *CodeSettings) Encode(b *bin.Buffer) error {
if c == nil {
return fmt.Errorf("can't encode codeSettings#ad253d78 as nil")
}
b.PutID(CodeSettingsTypeID)
return c.EncodeBare(b)
}
// EncodeBare implements bin.BareEncoder.
func (c *CodeSettings) EncodeBare(b *bin.Buffer) error {
if c == nil {
return fmt.Errorf("can't encode codeSettings#ad253d78 as nil")
}
c.SetFlags()
if err := c.Flags.Encode(b); err != nil {
return fmt.Errorf("unable to encode codeSettings#ad253d78: field flags: %w", err)
}
if c.Flags.Has(6) {
b.PutVectorHeader(len(c.LogoutTokens))
for _, v := range c.LogoutTokens {
b.PutBytes(v)
}
}
if c.Flags.Has(8) {
b.PutString(c.Token)
}
if c.Flags.Has(8) {
b.PutBool(c.AppSandbox)
}
return nil
}
// Decode implements bin.Decoder.
func (c *CodeSettings) Decode(b *bin.Buffer) error {
if c == nil {
return fmt.Errorf("can't decode codeSettings#ad253d78 to nil")
}
if err := b.ConsumeID(CodeSettingsTypeID); err != nil {
return fmt.Errorf("unable to decode codeSettings#ad253d78: %w", err)
}
return c.DecodeBare(b)
}
// DecodeBare implements bin.BareDecoder.
func (c *CodeSettings) DecodeBare(b *bin.Buffer) error {
if c == nil {
return fmt.Errorf("can't decode codeSettings#ad253d78 to nil")
}
{
if err := c.Flags.Decode(b); err != nil {
return fmt.Errorf("unable to decode codeSettings#ad253d78: field flags: %w", err)
}
}
c.AllowFlashcall = c.Flags.Has(0)
c.CurrentNumber = c.Flags.Has(1)
c.AllowAppHash = c.Flags.Has(4)
c.AllowMissedCall = c.Flags.Has(5)
c.AllowFirebase = c.Flags.Has(7)
c.UnknownNumber = c.Flags.Has(9)
if c.Flags.Has(6) {
headerLen, err := b.VectorHeader()
if err != nil {
return fmt.Errorf("unable to decode codeSettings#ad253d78: field logout_tokens: %w", err)
}
if headerLen > 0 {
c.LogoutTokens = make([][]byte, 0, headerLen%bin.PreallocateLimit)
}
for idx := 0; idx < headerLen; idx++ {
value, err := b.Bytes()
if err != nil {
return fmt.Errorf("unable to decode codeSettings#ad253d78: field logout_tokens: %w", err)
}
c.LogoutTokens = append(c.LogoutTokens, value)
}
}
if c.Flags.Has(8) {
value, err := b.String()
if err != nil {
return fmt.Errorf("unable to decode codeSettings#ad253d78: field token: %w", err)
}
c.Token = value
}
if c.Flags.Has(8) {
value, err := b.Bool()
if err != nil {
return fmt.Errorf("unable to decode codeSettings#ad253d78: field app_sandbox: %w", err)
}
c.AppSandbox = value
}
return nil
}
// SetAllowFlashcall sets value of AllowFlashcall conditional field.
func (c *CodeSettings) SetAllowFlashcall(value bool) {
if value {
c.Flags.Set(0)
c.AllowFlashcall = true
} else {
c.Flags.Unset(0)
c.AllowFlashcall = false
}
}
// GetAllowFlashcall returns value of AllowFlashcall conditional field.
func (c *CodeSettings) GetAllowFlashcall() (value bool) {
if c == nil {
return
}
return c.Flags.Has(0)
}
// SetCurrentNumber sets value of CurrentNumber conditional field.
func (c *CodeSettings) SetCurrentNumber(value bool) {
if value {
c.Flags.Set(1)
c.CurrentNumber = true
} else {
c.Flags.Unset(1)
c.CurrentNumber = false
}
}
// GetCurrentNumber returns value of CurrentNumber conditional field.
func (c *CodeSettings) GetCurrentNumber() (value bool) {
if c == nil {
return
}
return c.Flags.Has(1)
}
// SetAllowAppHash sets value of AllowAppHash conditional field.
func (c *CodeSettings) SetAllowAppHash(value bool) {
if value {
c.Flags.Set(4)
c.AllowAppHash = true
} else {
c.Flags.Unset(4)
c.AllowAppHash = false
}
}
// GetAllowAppHash returns value of AllowAppHash conditional field.
func (c *CodeSettings) GetAllowAppHash() (value bool) {
if c == nil {
return
}
return c.Flags.Has(4)
}
// SetAllowMissedCall sets value of AllowMissedCall conditional field.
func (c *CodeSettings) SetAllowMissedCall(value bool) {
if value {
c.Flags.Set(5)
c.AllowMissedCall = true
} else {
c.Flags.Unset(5)
c.AllowMissedCall = false
}
}
// GetAllowMissedCall returns value of AllowMissedCall conditional field.
func (c *CodeSettings) GetAllowMissedCall() (value bool) {
if c == nil {
return
}
return c.Flags.Has(5)
}
// SetAllowFirebase sets value of AllowFirebase conditional field.
func (c *CodeSettings) SetAllowFirebase(value bool) {
if value {
c.Flags.Set(7)
c.AllowFirebase = true
} else {
c.Flags.Unset(7)
c.AllowFirebase = false
}
}
// GetAllowFirebase returns value of AllowFirebase conditional field.
func (c *CodeSettings) GetAllowFirebase() (value bool) {
if c == nil {
return
}
return c.Flags.Has(7)
}
// SetUnknownNumber sets value of UnknownNumber conditional field.
func (c *CodeSettings) SetUnknownNumber(value bool) {
if value {
c.Flags.Set(9)
c.UnknownNumber = true
} else {
c.Flags.Unset(9)
c.UnknownNumber = false
}
}
// GetUnknownNumber returns value of UnknownNumber conditional field.
func (c *CodeSettings) GetUnknownNumber() (value bool) {
if c == nil {
return
}
return c.Flags.Has(9)
}
// SetLogoutTokens sets value of LogoutTokens conditional field.
func (c *CodeSettings) SetLogoutTokens(value [][]byte) {
c.Flags.Set(6)
c.LogoutTokens = value
}
// GetLogoutTokens returns value of LogoutTokens conditional field and
// boolean which is true if field was set.
func (c *CodeSettings) GetLogoutTokens() (value [][]byte, ok bool) {
if c == nil {
return
}
if !c.Flags.Has(6) {
return value, false
}
return c.LogoutTokens, true
}
// SetToken sets value of Token conditional field.
func (c *CodeSettings) SetToken(value string) {
c.Flags.Set(8)
c.Token = value
}
// GetToken returns value of Token conditional field and
// boolean which is true if field was set.
func (c *CodeSettings) GetToken() (value string, ok bool) {
if c == nil {
return
}
if !c.Flags.Has(8) {
return value, false
}
return c.Token, true
}
// SetAppSandbox sets value of AppSandbox conditional field.
func (c *CodeSettings) SetAppSandbox(value bool) {
c.Flags.Set(8)
c.AppSandbox = value
}
// GetAppSandbox returns value of AppSandbox conditional field and
// boolean which is true if field was set.
func (c *CodeSettings) GetAppSandbox() (value bool, ok bool) {
if c == nil {
return
}
if !c.Flags.Has(8) {
return value, false
}
return c.AppSandbox, true
}