public void Start() { var apiClient = new ApiClient(WebApi); var signer = new AuthSigner(BotKey); _userApi = new UserApi(apiClient, signer); _wordApi = new WordApi(apiClient); _serviceApi = new ServiceApi(apiClient); _folderApi = new FolderApi(apiClient); _userApi.LoginUser(new ApiUser { Id = AdminId }); _restWordRepository = new RestWordRepository(_wordApi, _userApi, _serviceApi, _folderApi); _testWords = GetTestWords(); _testWordFileBytes = GetTestWordFileBytes(); FillDb(); }
public void ConfigureServices(IServiceCollection services) { var botSettings = BotSettings; var tClient = new TelegramBotClient(botSettings.TelegramBotKey) { Timeout = botSettings.PollingTimeout }; var apiClient = new ApiClient(botSettings.ApiPublicUrl); var wordApi = new WordApi(apiClient); var signer = new AuthSigner(botSettings.TelegramBotKey); var userApi = new UserApi(apiClient, signer); var serviceApi = new ServiceApi(apiClient); var folderApi = new FolderApi(apiClient); var log4NetService = new Log4NetService(); var restWordRepository = new RestWordRepository(wordApi, userApi, serviceApi, folderApi); var antiDdosChecker = new AntiDdosChecker(GetDateTime); var commandManager = new CommandManager(GetCommands, GetHiddenCommands, new Dictionary <string, ECommands> { { botSettings.ServiceCommandPassword, ECommands.Admin } }); apiClient.OnAuthenticationRequest += (o, e) => { userApi.LoginUser(new ApiUser { Id = botSettings.UserId.ToString() }); }; services.AddSingleton(a => antiDdosChecker); services.AddSingleton(bS => botSettings); services.AddSingleton(cl => tClient); services.AddSingleton <ICommandManager>(commandManager); services.AddSingleton <ILogService>(log4NetService); services.AddSingleton <IWordRepository>(restWordRepository); var flashCardUrl = $"{botSettings.ApiPublicUrl}/word/file"; services.AddSingleton(qh => new QueryHandler(tClient, log4NetService, restWordRepository, antiDdosChecker, flashCardUrl, commandManager, MaxUploadFileSize)); services.AddSingleton <ISyllableColorProvider, ClassicSyllableColorProvider>(); services.AddSingleton <IChineseWordParseProvider, PinyinChineseWordParseProvider>(); services.AddSingleton <IStudyProvider, ClassicStudyProvider>(); services.AddSingleton <ISyllablesToStringConverter, ClassicSyllablesToStringConverter>(); services.AddSingleton <IChinesePinyinConverter, Pinyin4NetConverter>(); services.AddSingleton <IFlashCardGenerator, FontFlashCardGenerator>(); services.AddTransient(a => new AboutCommand(ReleaseNotesInfo, AboutInfo)); services.AddTransient(a => new HelpCommand(GetCommands)); services.AddTransient(a => new StartCommand(GetCommands, botSettings.WebhookPublicUrl)); services.AddTransient(a => new FolderCommand(ServiceProvider.GetService <IWordRepository>(), botSettings.FolderManagementText)); services.AddTransient(a => new DefaultCommand(ServiceProvider.GetService <IWordRepository>())); services.AddTransient(a => new ImportCommand(ServiceProvider.GetService <IChineseWordParseProvider>(), ServiceProvider.GetService <IWordRepository>(), ServiceProvider.GetService <IFlashCardGenerator>(), MaxUploadFileSize)); services.AddTransient(a => new AddCommand(ServiceProvider.GetService <IChineseWordParseProvider>(), ServiceProvider.GetService <IWordRepository>(), ServiceProvider.GetService <IFlashCardGenerator>())); services.AddTransient(a => new ViewCommand(ServiceProvider.GetService <IWordRepository>())); services.AddTransient(a => new DeleteCommand(ServiceProvider.GetService <IWordRepository>())); services.AddTransient(a => new EditCommand(ServiceProvider.GetService <IWordRepository>(), ServiceProvider.GetService <IChineseWordParseProvider>(), ServiceProvider.GetService <ImportCommand>(), ServiceProvider.GetService <IFlashCardGenerator>())); services.AddTransient(a => new LearnWritingCommand(ServiceProvider.GetService <IStudyProvider>(), ServiceProvider.GetService <EditCommand>())); services.AddTransient(a => new LearnViewCommand(ServiceProvider.GetService <IStudyProvider>(), ServiceProvider.GetService <EditCommand>())); services.AddTransient(a => new LearnSpeakCommand(ServiceProvider.GetService <IStudyProvider>(), ServiceProvider.GetService <EditCommand>())); services.AddTransient(a => new LearnTranslationCommand(ServiceProvider.GetService <IStudyProvider>(), ServiceProvider.GetService <EditCommand>())); services.AddTransient(a => new ModeCommand(ServiceProvider.GetService <IWordRepository>())); services.AddTransient(a => new PreInstallCommand(ServiceProvider.GetService <IWordRepository>())); services.AddTransient(a => new AdminCommand(ServiceProvider.GetService <IChineseWordParseProvider>(), ServiceProvider.GetService <IWordRepository>(), ServiceProvider.GetService <IFlashCardGenerator>(), MaxUploadFileSize, PreInstalledFolder, botSettings.ServerUserId, botSettings.AdminUserId, tClient)); services.AddTransient(a => new WebCommand(signer, botSettings.ApiPublicUrl)); services.AddSingleton(a => new AntiDdosChecker(GetDateTime)); services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1); }