using System; using System.Threading.Tasks; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; using Volo.Abp; using Volo.Abp.AutoMapper; using Volo.Abp.BlobStoring; using Volo.Abp.Caching; using Volo.Abp.Domain; using Volo.Abp.Domain.Entities.Events.Distributed; using Volo.Abp.Localization; using Volo.Abp.Modularity; using Volo.Abp.Threading; using Volo.Abp.VirtualFileSystem; using Volo.Docs.Documents; using Volo.Docs.Documents.FullSearch.Elastic; using Volo.Docs.FileSystem.Documents; using Volo.Docs.GitHub; using Volo.Docs.GitHub.Documents; using Volo.Docs.Localization; using Volo.Docs.Projects; namespace Volo.Docs { [DependsOn( typeof(DocsDomainSharedModule), typeof(AbpDddDomainModule), typeof(AbpAutoMapperModule), typeof(AbpBlobStoringModule), typeof(AbpCachingModule) )] public class DocsDomainModule : AbpModule { public override void ConfigureServices(ServiceConfigurationContext context) { context.Services.AddAutoMapperObjectMapper(); Configure(options => { options.AddProfile(validate: true); }); Configure(options => { options.EtoMappings.Add(typeof(DocsDomainModule)); options.EtoMappings.Add(typeof(DocsDomainModule)); }); Configure(options => { options.FileSets .AddEmbedded(); }); Configure(options => { options.Resources .Get() .AddVirtualJson("/Volo/Docs/Localization/Domain"); }); Configure(options => { options.Sources[GithubDocumentSource.Type] = typeof(GithubDocumentSource); options.Sources[FileSystemDocumentSource.Type] = typeof(FileSystemDocumentSource); }); Configure(options => { options.DefaultLanguage = new LanguageConfigElement { Code = "en", DisplayName = "English", IsDefault = true }; }); context.Services.AddHttpClient(GithubRepositoryManager.HttpClientName, client => { client.Timeout = TimeSpan.FromMilliseconds(15000); }); } public async override Task OnApplicationInitializationAsync(ApplicationInitializationContext context) { using (var scope = context.ServiceProvider.CreateScope()) { if (scope.ServiceProvider.GetRequiredService>().Value.Enable) { var documentFullSearch = scope.ServiceProvider.GetRequiredService(); await documentFullSearch.CreateIndexIfNeededAsync(); } } } public override void OnApplicationInitialization(ApplicationInitializationContext context) { AsyncHelper.RunSync(() => OnApplicationInitializationAsync(context)); } } }