Compare commits

...
5 Commits
Author SHA1 Message Date
xrain b545af2365 add password oauth method for doc 2021-06-27 10:59:19 +08:00
xrain ac9fd706f9 add map special field method 2021-06-08 10:54:51 +08:00
xrain 8b4d551af8 storage add client 2021-06-07 15:24:22 +08:00
xrain 3445531972 add cors 2021-06-05 14:33:59 +08:00
xrain 2268ad0c8c add cors 2021-06-05 14:30:52 +08:00
4 changed files with 48 additions and 0 deletions
+1
View File
@@ -4,6 +4,7 @@ namespace SimApi.Configs
{
public class SimApiOptions
{
public bool EnableCors { get; set; } = true;
public bool EnableSimApiAuth { get; set; } = false;
public bool EnableSimApiDoc { get; set; } = true;
public bool EnableSimApiException { get; set; } = true;
+3
View File
@@ -10,6 +10,9 @@ namespace SimApi.Helpers
public class SimApiStorage
{
private MinioClient Mc { get; }
public MinioClient Client => Mc;
private string ServeUrl { get; }
private string Bucket { get; }
private IHttpContextAccessor HttpContextAccessor { get; }
+24
View File
@@ -33,6 +33,30 @@ namespace SimApi.Models
UpdateTime();
}
public void MapData<TS>(TS source, string[] mapFields)
{
//获取要赋值的源数据不为null的项目
var sourceProps = source.GetType().GetProperties().Where(x => x.GetValue(source) != null)
.Select(x => new {x.Name, x.PropertyType})
.ToDictionary(x => x.Name, x => x.PropertyType);
//获取目标对象的属性信息
var targetProps = GetType().GetProperties().Select(x => new {x.Name, x.PropertyType})
.ToDictionary(x => x.Name, x => x.PropertyType);
foreach (var sp in sourceProps)
{
//检查源对象不为空的属性是否在目标对象中存在
if (targetProps.ContainsKey(sp.Key) && sp.Value == targetProps[sp.Key] &&
mapFields.Contains(sp.Key))
{
GetType().GetProperty(sp.Key)?
.SetValue(this, source.GetType().GetProperty(sp.Key)?.GetValue(source));
}
}
UpdateTime();
}
/// <summary>
/// 更新update时间
/// </summary>
+20
View File
@@ -27,6 +27,12 @@ namespace SimApi
builder.AddScoped<SimApiAuth>();
}
if (simApiOptions.EnableCors)
{
builder.AddCors(cors => cors.AddPolicy("any",
policy => { policy.AllowAnyHeader().AllowAnyMethod().AllowAnyOrigin(); }));
}
// 使用SimApiDoc
if (simApiOptions.EnableSimApiDoc)
{
@@ -87,6 +93,14 @@ namespace SimApi
};
haveOauth = true;
break;
case "Password":
oauthFlows.Password = new OpenApiOAuthFlow
{
TokenUrl = new Uri(docOptions.ApiAuth.TokenUrl, UriKind.RelativeOrAbsolute),
Scopes = docOptions.ApiAuth.Scopes
};
haveOauth = true;
break;
}
}
@@ -160,6 +174,12 @@ namespace SimApi
builder.UseForwardedHeaders();
}
if (options.EnableCors)
{
SimApiUtil.Log("开始配置Cors全部允许...");
builder.UseCors("any");
}
if (options.EnableSimApiAuth)
{
SimApiUtil.Log("开始配置SimApiAuth...");