Example #1
0
        public async Task <bool> IsPhoneRegistered(string phoneNumber)
        {
            if (_sender == null)
            {
                throw new InvalidOperationException("Not connected!");
            }

            var authCheckPhoneRequest = new AuthCheckPhoneRequest(phoneNumber);
            await _sender.Send(authCheckPhoneRequest);

            await _sender.Recieve(authCheckPhoneRequest);

            return(authCheckPhoneRequest._phoneRegistered);
        }
Example #2
0
        public async Task <bool> Connect(bool reconnect = false)
        {
            if (_transport == null)
            {
                _transport = new TcpTransport(_session.ServerAddress, _session.Port);
            }

            if (_session.AuthKey == null || reconnect)
            {
                var result = await Authenticator.DoAuthentication(_transport);

                _session.AuthKey    = result.AuthKey;
                _session.TimeOffset = result.TimeOffset;
            }

            _sender = new MtProtoSender(_transport, _session);

            if (!reconnect)
            {
                var request = new InitConnectionRequest(_apiId);

                await _sender.Send(request);

                await _sender.Recieve(request);

                dcOptions            = request.ConfigConstructor.dc_options;
                _session.CurrentDcId = request.ConfigConstructor.this_dc;
            }

            return(true);
        }
Example #3
0
        public async Task <string> SendCodeRequest(string phoneNumber)
        {
retry:
            var request = new Auth_SendCodeRequest(phoneNumber, 5, // 5 = app code
                                                   Values.ApiID, Values.ApiHash, "en");
            await _sender.Send(request);

            await _sender.Recieve(request);

            var result = (Auth_sentAppCodeConstructor)request.result;

            if (result == null)
            {
                goto retry;                 // we probs had a phone migrate error!
            }
            return(result.phone_code_hash);
        }
Example #4
0
        public async Task <bool> Connect()
        {
            if (_session.AuthKey == null)
            {
                var result = await Authenticator.DoAuthentication(_transport);

                _session.AuthKey    = result.AuthKey;
                _session.TimeOffset = result.TimeOffset;
            }

            _sender = new MtProtoSender(_transport, _session);

            var request = new InitConnectionRequest(Values.ApiID);

            await _sender.Send(request);

            await _sender.Recieve(request);

            return(IsUserAuthorized());
        }
Example #5
0
        public async Task <bool> IsPhoneRegistered(string phoneNumber)
        {
            if (_sender == null)
            {
                throw new InvalidOperationException("Not connected!");
            }

            bool completed = false;
            AuthCheckPhoneRequest authCheckPhoneRequest = null;

            while (!completed)
            {
                authCheckPhoneRequest = new AuthCheckPhoneRequest(phoneNumber);

                try
                {
                    await _sender.Send(authCheckPhoneRequest);

                    await _sender.Recieve(authCheckPhoneRequest);

                    completed = true;
                }
                catch (InvalidOperationException e)
                {
                    if (e.Message.StartsWith("Your phone number registered to") && e.Data["dcId"] != null)
                    {
                        await ReconnectToDc((int)e.Data["dcId"]);
                    }
                    else
                    {
                        throw;
                    }
                }
            }

            return(authCheckPhoneRequest._phoneRegistered);
        }