using System.Text; using ASC.Api.Core; using ASC.Api.Core.Auth; using ASC.Api.Core.Middleware; using ASC.Api.Documents; using ASC.Common; using ASC.Common.Logging; using ASC.Web.Files; using ASC.Web.Files.HttpHandlers; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; namespace ASC.Files { public class Startup : BaseStartup { public Startup(IConfiguration configuration, IHostEnvironment hostEnvironment) : base(configuration, hostEnvironment) { } public override void ConfigureServices(IServiceCollection services) { Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); services.AddControllers() .AddXmlSerializerFormatters() .AddJsonOptions(options => { options.JsonSerializerOptions.WriteIndented = false; options.JsonSerializerOptions.IgnoreNullValues = true; options.JsonSerializerOptions.Converters.Add(new ApiDateTimeConverter()); options.JsonSerializerOptions.Converters.Add(new FileEntryWrapperConverter()); }); services.AddMemoryCache(); var diHelper = new DIHelper(services); diHelper .AddCookieAuthHandler() .AddCultureMiddleware() .AddIpSecurityFilter() .AddPaymentFilter() .AddProductSecurityFilter() .AddTenantStatusFilter(); LogParams = new string[] { "ASC.Files" }; diHelper .AddDocumentsControllerService() .AddEncryptionControllerService() .AddFileHandlerService() .AddChunkedUploaderHandlerService() .AddThirdPartyAppHandlerService() .AddDocuSignHandlerService(); base.ConfigureServices(services); } public override void Configure(IApplicationBuilder app, IWebHostEnvironment env) { base.Configure(app, env); app.MapWhen( context => context.Request.Path.ToString().EndsWith("httphandlers/filehandler.ashx"), appBranch => { appBranch.UseFileHandler(); }); app.MapWhen( context => context.Request.Path.ToString().EndsWith("ChunkedUploader.ashx"), appBranch => { appBranch.UseChunkedUploaderHandler(); }); app.MapWhen( context => context.Request.Path.ToString().EndsWith("ThirdPartyAppHandler.ashx"), appBranch => { appBranch.UseThirdPartyAppHandler(); }); app.MapWhen( context => context.Request.Path.ToString().EndsWith("DocuSignHandler.ashx"), appBranch => { appBranch.UseDocuSignHandler(); }); app.UseStaticFiles(); } } }