using System;
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
using Umbraco.Cms.Core.Configuration.Models;
using Umbraco.Cms.Core.Hosting;
using Umbraco.Cms.Web.BackOffice.Middleware;
using Umbraco.Cms.Web.BackOffice.Routing;
using Umbraco.Cms.Web.Common.ApplicationBuilder;
namespace Umbraco.Extensions
{
///
/// extensions for Umbraco
///
public static partial class UmbracoApplicationBuilderExtensions
{
///
/// Adds all required middleware to run the back office
///
///
///
public static IUmbracoApplicationBuilderContext UseBackOffice(this IUmbracoApplicationBuilderContext builder)
{
KeepAliveSettings keepAliveSettings = builder.ApplicationServices.GetRequiredService>().Value;
IHostingEnvironment hostingEnvironment = builder.ApplicationServices.GetRequiredService();
builder.AppBuilder.Map(
hostingEnvironment.ToAbsolute(keepAliveSettings.KeepAlivePingUrl),
a => a.UseMiddleware());
builder.AppBuilder.UseMiddleware();
return builder;
}
public static IUmbracoEndpointBuilderContext UseBackOfficeEndpoints(this IUmbracoEndpointBuilderContext app)
{
// NOTE: This method will have been called after UseRouting, UseAuthentication, UseAuthorization
if (app == null)
{
throw new ArgumentNullException(nameof(app));
}
if (!app.RuntimeState.UmbracoCanBoot())
{
return app;
}
BackOfficeAreaRoutes backOfficeRoutes = app.ApplicationServices.GetRequiredService();
backOfficeRoutes.CreateRoutes(app.EndpointRouteBuilder);
app.UseUmbracoRuntimeMinificationEndpoints();
app.UseUmbracoPreviewEndpoints();
return app;
}
}
}