using Microsoft.AspNetCore.Builder;
namespace DigitalData.Core.API
{
///
/// Provides extension methods for adding middleware to the application's request pipeline.
///
public static class DIExtensions
{
///
/// Adds the to the application's request pipeline to include
/// Content Security Policy (CSP) headers in the HTTP response.
///
/// The application builder.
///
/// The CSP policy string with placeholders. The first format parameter {0} will be replaced
/// by the nonce value.
///
/// The application builder with the CSP middleware added.
public static IApplicationBuilder UseCSPMiddleware(this IApplicationBuilder app, string policy)
=> app.UseMiddleware(policy);
///
/// Checks if the DiP (Development in Production) mode is enabled for the WebApplicationBuilder.
///
/// The WebApplicationBuilder instance.
/// True if DiP mode is enabled; otherwise, false.
public static bool IsDiP(this WebApplicationBuilder builder) => builder.Configuration.GetValue("DiPMode");
///
/// Checks if the DiP (Development in Production) mode is enabled for the WebApplication.
///
/// The WebApplication instance.
/// True if DiP mode is enabled; otherwise, false.
public static bool IsDiP(this WebApplication app) => app.Configuration.GetValue("DiPMode");
///
/// Checks if the environment is Development or DiP (Development in Production) mode is enabled for the WebApplicationBuilder.
///
/// The WebApplicationBuilder instance.
/// True if the environment is Development or DiP mode is enabled; otherwise, false.
public static bool IsDevOrDiP(this WebApplicationBuilder builder) => builder.Environment.IsDevelopment() || builder.IsDiP();
///
/// Checks if the environment is Development or DiP (Development in Production) mode is enabled for the WebApplication.
///
/// The WebApplication instance.
/// True if the environment is Development or DiP mode is enabled; otherwise, false.
public static bool IsDevOrDiP(this WebApplication app) => app.Environment.IsDevelopment() || app.IsDiP();
}
}