Exemple #1
0
        private async Task ConnectAsync(bool forceAuth)
        {
            if (ClientSettings.Session.AuthKey == null || ClientSettings.Session.AuthKey.Data.Length == 0 || forceAuth)
            {
                var result = await DoAuthentication().ConfigureAwait(false);

                ClientSettings.Session.AuthKey    = result.AuthKey;
                ClientSettings.Session.TimeOffset = result.TimeOffset;

                await SessionStore.Save().ConfigureAwait(false);
            }

            ProtoRecieveService.StartReceiving();

            //set-up layer
            var request = new RequestInvokeWithLayer
            {
                Layer = SchemaInfo.SchemaVersion,
                Query = new RequestInitConnection
                {
                    ApiId          = ClientSettings.AppId,
                    AppVersion     = "1.0.0",
                    DeviceModel    = "PC",
                    LangCode       = "en",
                    LangPack       = "tdesktop",
                    SystemLangCode = "en",
                    Query          = new RequestGetConfig(),
                    SystemVersion  = "Win 10.0"
                }
            };

            var response = (TConfig)await SendService.SendRequestAsync(request).ConfigureAwait(false);

            _dcOptions = response.DcOptions.Items.Cast <TDcOption>().ToArray();
        }
Exemple #2
0
        public async Task ConnectAsync(bool reconnect = false)
        {
            if (ClientSettings.Session.AuthKey == null || reconnect)
            {
                var result = await DoAuthentication();

                ClientSettings.Session.AuthKey    = result.AuthKey;
                ClientSettings.Session.TimeOffset = result.TimeOffset;

                SessionStore.Save();
            }

            //set-up layer
            var config  = new TlRequestGetConfig();
            var request = new TlRequestInitConnection
            {
                ApiId         = ClientSettings.AppId,
                AppVersion    = "1.0.0",
                DeviceModel   = "PC",
                LangCode      = "en",
                Query         = config,
                SystemVersion = "Win 10.0"
            };

            ConfirmationSendService.StartSendingConfirmation();
            ProtoRecieveService.StartReceiving();

            var response = await SendRequestAsync <TlConfig>(new TlRequestInvokeWithLayer { Layer = 57, Query = request });

            _dcOptions = response.DcOptions.Lists;
        }
 public void Dispose()
 {
     _timer?.Dispose();
     ProtoRecieveService?.Dispose();
 }