Exemple #1
0
        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();
        }
Exemple #2
0
        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);
        }