private static async Task FillSettings(IWindsorContainer container, IFactorySettings factorySettings) { Guard.That(factorySettings.AppId).IsPositive(); Guard.That(factorySettings.AppHash).IsNotNullOrWhiteSpace(); Guard.That(factorySettings.ServerAddress).IsNotNullOrWhiteSpace(); Guard.That(factorySettings.ServerPublicKey).IsNotNullOrWhiteSpace(); Guard.That(factorySettings.ServerPort).IsPositive(); var settings = container.Resolve <IClientSettings>(); settings.AppId = factorySettings.AppId; settings.AppHash = factorySettings.AppHash; settings.PublicKey = factorySettings.ServerPublicKey; settings.ApplicationProperties = factorySettings.Properties; settings.Socks5Proxy = factorySettings.ProxyConfig; settings.UseIPv6 = factorySettings.UseIPv6; if (factorySettings.SessionStore != null) { container.Register(Component.For <ISessionStore>().Instance(factorySettings.SessionStore).IsDefault()); } var sessionStore = container.Resolve <ISessionStore>(); sessionStore.SetSessionTag(factorySettings.SessionTag); settings.ClientSession = await TryLoadOrCreateNew(sessionStore, factorySettings); }
public static async Task <ITelegramClient> BuildClient(IFactorySettings factorySettings) { var container = RegisterDependency(); await FillSettings(container, factorySettings).ConfigureAwait(false); return(container.Resolve <ITelegramClient>()); }
/// <summary>Build the client</summary> /// <param name="factorySettings">Settings</param> /// <returns>Client</returns> public static async Task <IClientApi> BuildClientAsync(IFactorySettings factorySettings) { var container = WindsorFactory.Create(typeof(INettyBootstrapper).GetTypeInfo().Assembly, typeof(IClientApi).GetTypeInfo().Assembly); await FillSettings(container, factorySettings); var bootstrapper = container.Resolve <INettyBootstrapper>(); await bootstrapper.Init(); return(container.Resolve <IClientApi>()); }
public async Task Init(IFactorySettings factorySettings) { _clientApi = await ClientFactory.BuildClientAsync(factorySettings).ConfigureAwait(false); _clientApi.UpdatesService.AutoReceiveUpdates += update => { Console.WriteLine($"updates: {JsonConvert.SerializeObject(update)}"); }; if (_clientApi.AuthService.CurrentUserId.HasValue) { _clientApi.UpdatesService.StartReceiveUpdates(TimeSpan.FromSeconds(1)); } }
private static async Task FillSettings(IWindsorContainer container, IFactorySettings factorySettings) { Guard.That(factorySettings.Id).IsPositive(); Guard.That(factorySettings.Hash).IsNotNullOrWhiteSpace(); Guard.That(factorySettings.ServerAddress).IsNotNullOrWhiteSpace(); Guard.That(factorySettings.ServerPort).IsPositive(); var settings = container.Resolve <IClientSettings>(); settings.AppId = factorySettings.Id; settings.AppHash = factorySettings.Hash; container.Register(Component.For <ISessionStoreProvider>().Instance(factorySettings.StoreProvider)); var sessionStore = container.Resolve <ISessionStore>(); settings.Session = await TryLoadOrCreateNew(sessionStore, factorySettings).ConfigureAwait(false); }
private static IClientSession TryLoadOrCreateNew(ISessionStore sessionStore, IFactorySettings factorySettings) { var newSession = new ClientSession(); var sessionData = sessionStore.Load(); if (sessionData != null) { newSession.FromBytes(sessionData); } else { newSession.ServerAddress = factorySettings.ServerAddress; newSession.Port = factorySettings.ServerPort; } return(newSession); }
public async Task Init(IFactorySettings factorySettings) { _clientApi = await ClientFactory.BuildClientAsync(factorySettings).ConfigureAwait(false); }
private static async Task <ISession> TryLoadOrCreateNew(ISessionStore sessionStore, IFactorySettings factorySettings) { var session = await sessionStore.Load().ConfigureAwait(false) ?? Session.Create(); session.ServerAddress = factorySettings.ServerAddress; session.Port = factorySettings.ServerPort; return(session); }