diff --git a/telegram/client.go b/telegram/client.go index 3d361b6..688912b 100644 --- a/telegram/client.go +++ b/telegram/client.go @@ -30,7 +30,8 @@ func stringToLogConstant(c string) int32 { return level } -type TelegramClient struct { +// Client stores the metadata for lazily invoked TDlib instance +type Client struct { client *client.Client jid string parameters *client.TdlibParameters @@ -39,14 +40,14 @@ type TelegramClient struct { } // NewClient instantiates a Telegram App -func NewClient(conf config.TelegramConfig, jid string) (TelegramClient, error) { +func NewClient(conf config.TelegramConfig, jid string) (Client, error) { logVerbosity := client.WithLogVerbosity(&client.SetLogVerbosityLevelRequest{ NewVerbosityLevel: stringToLogConstant(conf.Loglevel), }) - apiId, err := strconv.Atoi(conf.Tdlib.Client.APIID) + apiID, err := strconv.Atoi(conf.Tdlib.Client.APIID) if err != nil { - return TelegramClient{}, errors.Wrap(err, "Wrong api_id") + return Client{}, errors.Wrap(err, "Wrong api_id") } parameters := client.TdlibParameters{ @@ -60,7 +61,7 @@ func NewClient(conf config.TelegramConfig, jid string) (TelegramClient, error) { UseMessageDatabase: true, UseSecretChats: conf.Tdlib.Client.UseSecretChats, - ApiId: int32(apiId), + ApiId: int32(apiID), ApiHash: conf.Tdlib.Client.APIHash, SystemLanguageCode: "en", @@ -72,7 +73,7 @@ func NewClient(conf config.TelegramConfig, jid string) (TelegramClient, error) { IgnoreFileNames: false, } - return TelegramClient{ + return Client{ parameters: ¶meters, jid: jid, logVerbosity: logVerbosity, @@ -89,30 +90,3 @@ func updateHandler(tdlibClient *client.Client) { } } } - -func (c *TelegramClient) Connect() error { - if c.online { - return nil - } - - authorizer := client.ClientAuthorizer() - authorizer.TdlibParameters <- c.parameters - - tdlibClient, err := client.NewClient(authorizer, c.logVerbosity) - if err != nil { - return errors.Wrap(err, "Coudn't initialize a Telegram client instance") - } - - c.client = tdlibClient - c.online = true - - go updateHandler(c.client) - - return nil -} - -func (c *TelegramClient) Disconnect() { - if !c.online { - return - } -} diff --git a/telegram/connect.go b/telegram/connect.go new file mode 100644 index 0000000..72cd417 --- /dev/null +++ b/telegram/connect.go @@ -0,0 +1,36 @@ +package telegram + +import ( + "github.com/pkg/errors" + + "github.com/zelenin/go-tdlib/client" +) + +// Connect starts TDlib connection +func (c *Client) Connect() error { + if c.online { + return nil + } + + authorizer := client.ClientAuthorizer() + authorizer.TdlibParameters <- c.parameters + + tdlibClient, err := client.NewClient(authorizer, c.logVerbosity) + if err != nil { + return errors.Wrap(err, "Coudn't initialize a Telegram client instance") + } + + c.client = tdlibClient + c.online = true + + go updateHandler(c.client) + + return nil +} + +// Disconnect drops TDlib connection +func (c *Client) Disconnect() { + if !c.online { + return + } +} diff --git a/xmpp/handlers.go b/xmpp/handlers.go index c7acdce..4a6c999 100644 --- a/xmpp/handlers.go +++ b/xmpp/handlers.go @@ -8,7 +8,7 @@ import ( "gosrc.io/xmpp/stanza" ) -var sessions map[string]telegram.TelegramClient +var sessions map[string]telegram.Client func logPacketType(p stanza.Packet) { log.Warn("Ignoring packet: %T\n", p)