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.
111 lines
3.1 KiB
111 lines
3.1 KiB
using System; |
|
using System.Collections.Generic; |
|
using System.Net; |
|
using Volo.Abp.Collections; |
|
|
|
namespace Sanhe.Abp.Wrapper; |
|
|
|
public class AbpWrapperOptions |
|
{ |
|
/// <summary> |
|
/// 未处理异常代码 |
|
/// 默认: 500 |
|
/// </summary> |
|
public string CodeWithUnhandled { get; set; } |
|
/// <summary> |
|
/// 是否启用包装器 |
|
/// </summary> |
|
public bool IsEnabled { get; set; } |
|
/// <summary> |
|
/// 成功时返回代码 |
|
/// 默认:0 |
|
/// </summary> |
|
public string CodeWithSuccess { get; set; } |
|
/// <summary> |
|
/// 资源为空时是否提示错误 |
|
/// 默认: false |
|
/// </summary> |
|
public bool ErrorWithEmptyResult { get; set; } |
|
/// <summary> |
|
/// 资源为空时返回代码 |
|
/// 默认:404 |
|
/// </summary> |
|
public Func<IServiceProvider, string> CodeWithEmptyResult { get; set; } |
|
/// <summary> |
|
/// 资源为空时返回错误消息 |
|
/// </summary> |
|
public Func<IServiceProvider, string> MessageWithEmptyResult { get; set; } |
|
/// <summary> |
|
/// 包装后的返回状态码 |
|
/// 默认:200 HttpStatusCode.OK |
|
/// </summary> |
|
public HttpStatusCode HttpStatusCode { get; set; } |
|
/// <summary> |
|
/// 忽略Url开头类型 |
|
/// </summary> |
|
public IList<string> IgnorePrefixUrls { get; } |
|
/// <summary> |
|
/// 忽略指定命名空间 |
|
/// </summary> |
|
public IList<string> IgnoreNamespaces { get; } |
|
/// <summary> |
|
/// 忽略控制器 |
|
/// </summary> |
|
public ITypeList IgnoreControllers { get; } |
|
/// <summary> |
|
/// 忽略返回值 |
|
/// </summary> |
|
public ITypeList IgnoreReturnTypes { get; } |
|
/// <summary> |
|
/// 忽略异常 |
|
/// </summary> |
|
public ITypeList<Exception> IgnoreExceptions { get; } |
|
/// <summary> |
|
/// 忽略接口类型 |
|
/// </summary> |
|
public ITypeList IgnoredInterfaces { get; } |
|
|
|
internal IDictionary<Type, IExceptionWrapHandler> ExceptionHandles { get; } |
|
|
|
public AbpWrapperOptions() |
|
{ |
|
CodeWithUnhandled = "500"; |
|
CodeWithSuccess = "0"; |
|
HttpStatusCode = HttpStatusCode.OK; |
|
ErrorWithEmptyResult = false; |
|
|
|
IgnorePrefixUrls = new List<string>(); |
|
IgnoreNamespaces = new List<string>(); |
|
|
|
IgnoreControllers = new TypeList(); |
|
IgnoreReturnTypes = new TypeList(); |
|
IgnoredInterfaces = new TypeList() |
|
{ |
|
typeof(IWrapDisabled) |
|
}; |
|
IgnoreExceptions = new TypeList<Exception>(); |
|
|
|
CodeWithEmptyResult = (_) => "404"; |
|
MessageWithEmptyResult = (_) => "Not Found"; |
|
|
|
ExceptionHandles = new Dictionary<Type, IExceptionWrapHandler>(); |
|
} |
|
|
|
public void AddHandler<TException>(IExceptionWrapHandler handler) |
|
where TException : Exception |
|
{ |
|
AddHandler(typeof(TException), handler); |
|
} |
|
|
|
public void AddHandler(Type exceptionType, IExceptionWrapHandler handler) |
|
{ |
|
ExceptionHandles[exceptionType] = handler; |
|
} |
|
|
|
public IExceptionWrapHandler GetHandler(Type exceptionType) |
|
{ |
|
ExceptionHandles.TryGetValue(exceptionType, out IExceptionWrapHandler handler); |
|
|
|
return handler; |
|
} |
|
}
|
|
|