public void InitializeTLInterfaces() { string[] sessions = Directory.GetFiles(_sessionsDirectoryPath); List <string> unAuthorizedSessions = new List <string>(); foreach (var sessionFile in sessions) { string session; if (sessionFile.EndsWith(".dat")) { session = sessionFile.Substring(0, sessionFile.Length - 4); } else { session = sessionFile; } if (!_tlInterfacePackages.Any(p => p.Interface.SessionPath == session)) { TLInterface tLInterface = new TLInterface(session); if (tLInterface.IsAuthorized) { _tlInterfacePackages.Add(new TLInterfacePackage() { Interface = tLInterface, IsAvailable = true, LastCallTime = DateTime.Now }); } else { unAuthorizedSessions.Add(session); } } } foreach (var session in unAuthorizedSessions) { File.Delete(session + ".dat"); } }
private static async Task AddSession(string[] args) { string phoneNumber; if (args.Count() > 0) { phoneNumber = args[0].Trim(); } else { Console.Write("Enter phone number: "); phoneNumber = Console.ReadLine().Trim(); if (string.IsNullOrEmpty(phoneNumber)) { Console.WriteLine("Session creation has been cancelled."); return; } } string sessionName = string.Format(@"sessions\{0}", DateTime.Now.ToIntSeconds()); TLInterface tl = new TLInterface(sessionName); try { await tl.SendCodeAsync(phoneNumber); } catch (InvalidOperationException e) { Console.WriteLine("Error: {0}", e.Message); File.Delete(sessionName + ".dat"); return; } Console.Write("Enter code: "); try { await tl.EnterCodeAsync(Console.ReadLine().Trim()); } catch (PasswordRequiredException) { Console.Write("Enter your cloud password: "******"Error: {0}", e.Message); File.Delete(sessionName + ".dat"); return; } } catch (Exception e) { Console.WriteLine("Error: {0}", e.Message); File.Delete(sessionName + ".dat"); return; } if (tl.IsAuthorized) { Console.WriteLine("Session added successfully."); feeder.InitializeTLInterfaces(); } else { Console.WriteLine("Error."); File.Delete(sessionName + ".dat"); } }