XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFEExtension.NetCore.ServerInteractive

[DLL] Server interaction extension, including user identity verification and querying in conjunction with AutoConfig

公开
关注 0 Fork 0 Star 0
返回提交历史

XFEstudio/XFEExtension.NetCore.ServerInteractive

优化XFE客户端请求器构建与配置方式

重构XFEClientRequesterBuilder,新增XFEClientRequesterOptions配置类,统一管理请求参数。支持通过Build方法传递配置对象或委托。新增AutoUnescapeResponse属性,提升响应内容处理灵活性。优化请求参数传递与IP绑定交互流程,提升代码可读性与健壮性。

22ae0a7
XFE工作室室长 <mail@xfegzs.com>
提交于

代码差异

6 个文件 +71 -26
Modified XFEExtension.NetCore.ServerInteractive/Models/RequesterModels/XFEClientInstanceRequest.cs +1 -1
@@ -8,7 +8,7 @@ public class XFEClientInstanceRequest
8 8 /// <summary>
9 9 /// 构建请求体
10 10 /// </summary>
11 public Func<string, string, object[], object> ConstructBody { get; set; } = (_, _, _) => default!;
11 public Func<string, string, object[], object> ConstructBody { get; set; } = (_, _, _) => null!;
12 12 /// <summary>
13 13 /// 处理请求
14 14 /// </summary>
Added XFEExtension.NetCore.ServerInteractive/Options/XFEClientRequesterOptions.cs +24 -0
@@ -0,0 +1,24 @@
1 namespace XFEExtension.NetCore.ServerInteractive.Options;
2
3 /// <summary>
4 /// XFE客户端请求器选项
5 /// </summary>
6 public class XFEClientRequesterOptions
7 {
8 /// <summary>
9 /// 请求地址
10 /// </summary>
11 public string RequestAddress { get; set; } = "http://localhost:3300/";
12 /// <summary>
13 /// 本次会话Session
14 /// </summary>
15 public string Session { get; set; } = string.Empty;
16 /// <summary>
17 /// 电脑信息
18 /// </summary>
19 public string ComputerInfo { get; set; } = string.Empty;
20 /// <summary>
21 /// 自动反转义响应内容(针对XFERequestService和XFEClientInstanceRequest的响应内容进行反转义处理,默认为true)
22 /// </summary>
23 public bool AutoUnescapeResponse { get; set; } = true;
24 }
Modified XFEExtension.NetCore.ServerInteractive/Utilities/Extensions/XFEClientRequesterBuilderExtensions.cs +3 -3
@@ -12,7 +12,7 @@ namespace XFEExtension.NetCore.ServerInteractive.Utilities.Extensions;
12 12 /// </summary>
13 13 public static class XFEClientRequesterBuilderExtensions
14 14 {
15 private readonly static JsonSerializerOptions JsonSerializerOptions = new();
15 private static readonly JsonSerializerOptions JsonSerializerOptions = new();
16 16
17 17 static XFEClientRequesterBuilderExtensions() => JsonSerializerOptions.Converters.Add(new JsonDateTimeConverter());
18 18
@@ -38,7 +38,7 @@ public static class XFEClientRequesterBuilderExtensions
38 38 computerInfo,
39 39 startDateTime = parameters[0],
40 40 endDateTime = parameters[1]
41 }, static response => response).AddRequest("clear_log", static (session, computerInfo, parameters) => new
41 }, static response => response).AddRequest("clear_log", static (session, computerInfo, _) => new
42 42 {
43 43 execute = "clear_log",
44 44 session,
@@ -50,7 +50,7 @@ public static class XFEClientRequesterBuilderExtensions
50 50 /// </summary>
51 51 /// <param name="xFEClientRequesterBuilder"></param>
52 52 /// <returns></returns>
53 public static XFEClientRequesterBuilder AddBannedIpRequest(this XFEClientRequesterBuilder xFEClientRequesterBuilder) => xFEClientRequesterBuilder.AddRequest("get_bannedIpList", static (session, computerInfo, parameters) => new
53 public static XFEClientRequesterBuilder AddBannedIpRequest(this XFEClientRequesterBuilder xFEClientRequesterBuilder) => xFEClientRequesterBuilder.AddRequest("get_bannedIpList", static (session, computerInfo, _) => new
54 54 {
55 55 execute = "get_bannedIpList",
56 56 session,
Modified XFEExtension.NetCore.ServerInteractive/Utilities/Requester/XFEClientRequester.cs +4 -0
@@ -20,6 +20,10 @@ public abstract class XFEClientRequester : IRequesterBase
20 20 internal Dictionary<string, IRequestService> RequestServiceDictionary = [];
21 21 internal Dictionary<string, IXFERequestService> XFERequestServiceDictionary = [];
22 22 internal Dictionary<string, XFEClientInstanceRequest> XFEClientInstanceRequestDictionary = [];
23 /// <summary>
24 /// 自动反转义响应内容(针对XFERequestService和XFEClientInstanceRequest的响应内容进行反转义处理,默认为true)
25 /// </summary>
26 public bool AutoUnescapeResponse { get; set; } = true;
23 27 /// <inheritdoc/>
24 28 public string RequestAddress { get; set; } = string.Empty;
25 29 /// <inheritdoc/>
Modified XFEExtension.NetCore.ServerInteractive/Utilities/Requester/XFEClientRequesterBuilder.cs +26 -7
@@ -2,6 +2,7 @@
2 2 using XFEExtension.NetCore.ServerInteractive.Implements;
3 3 using XFEExtension.NetCore.ServerInteractive.Interfaces.Requester;
4 4 using XFEExtension.NetCore.ServerInteractive.Models.RequesterModels;
5 using XFEExtension.NetCore.ServerInteractive.Options;
5 6 using XFEExtension.NetCore.ServerInteractive.Utilities.Helpers;
6 7
7 8 namespace XFEExtension.NetCore.ServerInteractive.Utilities.Requester;
@@ -19,11 +20,8 @@ public abstract class XFEClientRequesterBuilder : XFEBuilderBase<XFEClientReques
19 20 /// <summary>
20 21 /// 创建构建器
21 22 /// </summary>
22 /// <param name="requestAddress">请求地址</param>
23 /// <param name="session">Session</param>
24 /// <param name="computerInfo">电脑信息</param>
25 23 /// <returns></returns>
26 public static XFEClientRequesterBuilder CreateBuilder(string requestAddress = "http://localhost:8080/", string session = "", string computerInfo = "")
24 public static XFEClientRequesterBuilder CreateBuilder()
27 25 {
28 26 var builder = new XFEClientRequesterBuilderImpl
29 27 {
@@ -41,9 +39,8 @@ public abstract class XFEClientRequesterBuilder : XFEBuilderBase<XFEClientReques
41 39 /// <summary>
42 40 /// 创建构建器
43 41 /// </summary>
44 /// <param name="requestAddress">请求地址</param>
45 42 /// <returns></returns>
46 public static XFEClientRequesterBuilder CreateBuilder(string requestAddress = "http://localhost:8080/")
43 public static XFEClientRequesterBuilder CreateBuilder()
47 44 {
48 45 var builder = new XFEClientRequesterBuilderImpl
49 46 {
@@ -129,8 +126,30 @@ public abstract class XFEClientRequesterBuilder : XFEBuilderBase<XFEClientReques
129 126 /// 构建XFE客户端请求器
130 127 /// </summary>
131 128 /// <returns>XFE客户端请求器</returns>
132 public XFEClientRequester Build()
129 public XFEClientRequester Build(XFEClientRequesterOptions options)
133 130 {
131 _xFEClientRequester.RequestAddress = options.RequestAddress;
132 _xFEClientRequester.Session = options.Session;
133 _xFEClientRequester.ComputerInfo = options.ComputerInfo;
134 _xFEClientRequester.AutoUnescapeResponse = options.AutoUnescapeResponse;
135 _xFEClientRequester.RequestServiceDictionary = _requestServiceDictionary;
136 _xFEClientRequester.XFERequestServiceDictionary = _xFERequestServiceDictionary;
137 _xFEClientRequester.XFEClientInstanceRequestDictionary = _xFEClientInstanceRequestDictionary;
138 return _xFEClientRequester;
139 }
140
141 /// <summary>
142 /// 构建XFE客户端请求器
143 /// </summary>
144 /// <returns>XFE客户端请求器</returns>
145 public XFEClientRequester Build(Action<XFEClientRequesterOptions> optionsBuilder)
146 {
147 var options = new XFEClientRequesterOptions();
148 optionsBuilder(options);
149 _xFEClientRequester.RequestAddress = options.RequestAddress;
150 _xFEClientRequester.Session = options.Session;
151 _xFEClientRequester.ComputerInfo = options.ComputerInfo;
152 _xFEClientRequester.AutoUnescapeResponse = options.AutoUnescapeResponse;
134 153 _xFEClientRequester.RequestServiceDictionary = _requestServiceDictionary;
135 154 _xFEClientRequester.XFERequestServiceDictionary = _xFERequestServiceDictionary;
136 155 _xFEClientRequester.XFEClientInstanceRequestDictionary = _xFEClientInstanceRequestDictionary;
Modified XFEExtension.NetCore.ServerInteractive/Utilities/Server/Services/ServerService/ServerIpInitializer.cs +13 -15
@@ -17,25 +17,23 @@ public class ServerIpInitializer : ServerInitializerServiceBase
17 17 foreach (var serverCoreService in XFEServer.ServerCoreProcessService.ServerCoreServiceList)
18 18 {
19 19 ServerBaseProfile.ServerLastBindingAddressDictionary.TryAdd(serverCoreService.ServerCoreName, $"http://localhost:{_nextDefaultPort++}/");
20 if (ServerBaseProfile.ServerLastBindingAddressDictionary.TryGetValue(serverCoreService.ServerCoreName, out var ipAddress))
20 if (!ServerBaseProfile.ServerLastBindingAddressDictionary.TryGetValue(serverCoreService.ServerCoreName, out var ipAddress)) continue;
21 Console.WriteLine($"正在设置服务器:{serverCoreService.ServerCoreName}");
22 Console.WriteLine($"是否绑定IP:{ipAddress}?(Y/N)");
23 var key = Console.ReadKey();
24 Console.WriteLine(key.Key.ToString());
25 if (key.Key == ConsoleKey.N)
21 26 {
22 Console.WriteLine($"正在设置服务器:{serverCoreService.ServerCoreName}");
23 Console.WriteLine($"是否绑定IP:{ipAddress}?(Y/N)");
24 var key = Console.ReadKey();
25 Console.WriteLine(key.Key.ToString());
26 if (key.Key == ConsoleKey.N)
27 ipAddress = string.Empty;
28 while (ipAddress.IsNullOrWhiteSpace())
27 29 {
28 ipAddress = string.Empty;
29 while (ipAddress.IsNullOrWhiteSpace())
30 {
31 XFEConsole.XFEConsole.CurrentConsoleTextWriter?.OriginalTextWriter.Write("请输入绑定的IP:");
32 ipAddress = Console.ReadLine();
33 }
34 ServerBaseProfile.ServerLastBindingAddressDictionary[serverCoreService.ServerCoreName] = ipAddress;
30 XFEConsole.XFEConsole.CurrentConsoleTextWriter?.OriginalTextWriter.Write("请输入绑定的IP:");
31 ipAddress = Console.ReadLine();
35 32 }
36 serverCoreService.BindingIPAddress = ipAddress;
37 Console.WriteLine($"服务器{serverCoreService.ServerCoreName}设置完成!IP为:{ipAddress}");
33 ServerBaseProfile.ServerLastBindingAddressDictionary[serverCoreService.ServerCoreName] = ipAddress;
38 34 }
35 serverCoreService.BindingIPAddress = ipAddress;
36 Console.WriteLine($"服务器{serverCoreService.ServerCoreName}设置完成!IP为:{ipAddress}");
39 37 }
40 38 ServerBaseProfile.SaveProfile();
41 39 }