| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- package telegram
-
- import (
- "context"
- "fmt"
- "sync"
-
- "github.com/9seconds/mtg/conntypes"
- "github.com/9seconds/mtg/telegram/api"
- "github.com/9seconds/mtg/wrappers"
- )
-
- type middleTelegram struct {
- baseTelegram
-
- secret []byte
- mutex sync.RWMutex
- }
-
- func (m *middleTelegram) update() error {
- secret, err := api.Secret()
- if err != nil {
- return fmt.Errorf("cannot fetch secret: %w", err)
- }
-
- v4Addresses, v4DefaultDC, err := api.AddressesV4()
- if err != nil {
- return fmt.Errorf("cannot fetch addresses for ipv4: %w", err)
- }
-
- v6Addresses, v6DefaultDC, err := api.AddressesV6()
- if err != nil {
- return fmt.Errorf("cannot fetch addresses for ipv6: %w", err)
- }
-
- m.mutex.Lock()
- m.secret = secret
- m.v4DefaultDC = v4DefaultDC
- m.V6DefaultDC = v6DefaultDC
- m.v4Addresses = v4Addresses
- m.v6Addresses = v6Addresses
- m.mutex.Unlock()
-
- return nil
- }
-
- func (m *middleTelegram) Dial(ctx context.Context,
- cancel context.CancelFunc,
- dc conntypes.DC,
- protocol conntypes.ConnectionProtocol) (wrappers.StreamReadWriteCloser, error) {
- if dc == 0 {
- dc = conntypes.DCDefaultIdx
- }
-
- return m.baseTelegram.dial(ctx, cancel, dc, protocol)
- }
|