You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
190 lines
7.0 KiB
190 lines
7.0 KiB
using Microsoft.AspNetCore.Http; |
|
using System; |
|
using System.Collections.Generic; |
|
using System.Reflection; |
|
using System.Threading.Tasks; |
|
using System.Linq; |
|
using Newtonsoft.Json; |
|
using ReZero.Configuration; |
|
namespace ReZero.SuperAPI |
|
{ |
|
/// <summary> |
|
/// Represents configuration options for the ReZero SuperAPI. |
|
/// </summary> |
|
public class SuperAPIOptions |
|
{ |
|
public static SuperAPIOptions GetOptions( string fileName = "appsettings.json") |
|
{ |
|
string key = "ReZero"; |
|
ReZeroJson configuration=ApiConfiguration.GetJsonValue<ReZeroJson>(key,fileName); |
|
SuperAPIOptions superAPIOptions = new SuperAPIOptions(); |
|
superAPIOptions.IsEnableSuperAPI = true; |
|
superAPIOptions.DatabaseOptions = new DatabaseOptions() |
|
{ |
|
ConnectionConfig = new SuperAPIConnectionConfig() |
|
{ |
|
ConnectionString = configuration.BasicDatabase?.ConnectionString, |
|
DbType = configuration?.BasicDatabase?.DbType ?? SqlSugar.DbType.Sqlite |
|
} |
|
}; |
|
superAPIOptions.UiOptions = new UiOptions() |
|
{ |
|
ShowNativeApiDocument = configuration?.Ui?.ShowNativeApiDocument ?? true |
|
}; |
|
superAPIOptions.InterfaceOptions = new InterfaceOptions() |
|
{ |
|
Jwt=configuration?.Jwt, |
|
CorsOptions = configuration?.Cors?? new ReZeroCors() |
|
}; |
|
if (!string.IsNullOrEmpty(configuration?.Ui?.DefaultIndexSource)) |
|
{ |
|
superAPIOptions.UiOptions.DefaultIndexSource = configuration.Ui.DefaultIndexSource; |
|
} |
|
return superAPIOptions; |
|
} |
|
|
|
public void EnableSuperApi() |
|
{ |
|
SuperAPIOptions options = new SuperAPIOptions(); |
|
IsEnableSuperAPI = true; |
|
this.DatabaseOptions = options.DatabaseOptions; |
|
this.InterfaceOptions = options.InterfaceOptions; |
|
this.DependencyInjectionOptions = options.DependencyInjectionOptions; |
|
this.UiOptions = options.UiOptions; |
|
} |
|
public void EnableSuperApi(SuperAPIOptions options) |
|
{ |
|
IsEnableSuperAPI = true; |
|
this.DatabaseOptions = options.DatabaseOptions; |
|
this.InterfaceOptions = options.InterfaceOptions; |
|
this.DependencyInjectionOptions = options.DependencyInjectionOptions; |
|
this.UiOptions = options.UiOptions; |
|
} |
|
|
|
/// <summary> |
|
/// Enable super api |
|
/// </summary> |
|
internal bool IsEnableSuperAPI = false; |
|
|
|
/// <summary> |
|
/// Gets or sets the database configuration options. |
|
/// </summary> |
|
public DatabaseOptions? DatabaseOptions { get; set; } |
|
|
|
|
|
public InterfaceOptions InterfaceOptions { get; set; } = new InterfaceOptions(); |
|
|
|
/// <summary> |
|
/// Gets or sets the options for the DependencyInjection. |
|
/// </summary> |
|
public DependencyInjectionOptions DependencyInjectionOptions { get; set; } = new DependencyInjectionOptions(); |
|
|
|
/// <summary> |
|
/// Gets or sets the UI configuration options. |
|
/// </summary> |
|
public UiOptions UiOptions { get; set; } = new UiOptions(); |
|
|
|
|
|
} |
|
public class DependencyInjectionOptions |
|
{ |
|
public Assembly[]? Assemblies { get; set; } |
|
|
|
public bool InitDependencyInjection => Assemblies?.Any() ?? false; |
|
|
|
public DependencyInjectionOptions(params Assembly[] assemblies) |
|
{ |
|
if (!InitDependencyInjection) |
|
{ |
|
this.Assemblies = assemblies; |
|
} |
|
} |
|
} |
|
public class InterfaceOptions |
|
{ |
|
public string? AuthorizationLocalStorageName { get; set; } = "RezeroLocalStorage"; |
|
public string PageNumberPropName { set; get; } = "PageNumber"; |
|
public string PageSizePropName { set; get; } = "PageSize"; |
|
public DefaultSuperApiAop SuperApiAop { get; set; } = new DefaultSuperApiAop(); |
|
public Func<InterfaceContext, bool>? NoAuthorizationFunc { get; set; } |
|
|
|
public Func<object, object>? MergeDataToStandardDtoFunc { get; set; } |
|
public ReZeroJwt? Jwt { get; set; } |
|
public ReZeroCors CorsOptions { get; set; } = new ReZeroCors(); |
|
|
|
public JsonSerializerSettings? JsonSerializerSettings { get; set; } |
|
} |
|
|
|
/// <summary> |
|
/// Represents configuration options for the database settings in ReZero. |
|
/// </summary> |
|
public class DatabaseOptions |
|
{ |
|
/// <summary> |
|
/// Gets or sets whether to initialize configuration tables. Default is true. |
|
/// </summary> |
|
public bool InitializeTables { get; set; } = true; |
|
|
|
/// <summary> |
|
/// Gets or sets the initialization connection string information. Default is SQLite. |
|
/// </summary> |
|
public SuperAPIConnectionConfig ConnectionConfig { get; set; } = new SuperAPIConnectionConfig() |
|
{ |
|
DbType = SqlSugar.DbType.Sqlite, |
|
ConnectionString = "datasource=ReZero.db" |
|
}; |
|
|
|
/// <summary> |
|
/// Callback function to retrieve the current user information. |
|
/// </summary> |
|
internal Func<CallBackUserInfo> GetCurrentUserCallback { get; set; } = () => new CallBackUserInfo { UserId = "1", UserName = "Admin" }; |
|
} |
|
|
|
/// <summary> |
|
/// Represents configuration options for the user interface settings in ReZero. |
|
/// </summary> |
|
public class UiOptions |
|
{ |
|
/// <summary> |
|
/// Gets or sets the language for the UI. |
|
/// </summary> |
|
public Language UiLanguage { get; set; } |
|
|
|
/// <summary> |
|
/// Gets or sets the folder name for the default UI. Default is "default_ui". |
|
/// </summary> |
|
public string? DefaultUiFolderName { get; set; } = "default_ui"; |
|
|
|
/// <summary> |
|
/// Gets or sets the source path for the default index. Default is "/swagger". |
|
/// </summary> |
|
public string? DefaultIndexSource { get; set; } = "/swagger"; |
|
|
|
/// <summary> |
|
/// Gets or sets the path for NuGet packages. Default is the default user NuGet packages path. |
|
/// </summary> |
|
public string? NugetPackagesPath { get; set; } = @"C:\Users\Administrator\.nuget\packages"; |
|
/// <summary> |
|
/// Show system api document |
|
/// </summary> |
|
public bool ShowSystemApiDocument { get; set; } = false; |
|
/// <summary> |
|
/// Show native api document |
|
/// </summary> |
|
public bool ShowNativeApiDocument { get; set; } = true; |
|
/// <summary> |
|
/// Enable Login page Configuration on the UI |
|
/// </summary> |
|
internal bool EnableLoginPage { get; set; } |
|
} |
|
|
|
|
|
public class AopOptions |
|
{ |
|
public Func<HttpContext, Task>? DynamicApiBeforeInvokeAsync { get; set; } |
|
public Func<HttpContext, Task>? DynamicApiAfterInvokeAsync { get; set; } |
|
|
|
public Func<HttpContext, Task>? SystemApiBeforeInvokeAsync { get; set; } |
|
public Func<HttpContext, Task>? SystemApiAfterInvokeAsync { get; set; } |
|
} |
|
} |