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); }
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); }
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); }
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()); }
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); }