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

重构响应处理,移除自动反转义,接口调整

重构 IStandardRequestService 及其实现,新增 Response/UnescapedResponse 属性,AnalyzeResponse 方法不再传递参数,统一通过属性获取响应内容。XFEClientRequester 移除 AutoUnescapeResponse 相关逻辑及配置项,响应处理更清晰。版本号升级至 2.4.0。

0cf11ba
XFE工作室室长 <mail@xfegzs.com>
提交于

代码差异

10 个文件 +32 -31
Modified XFEExtension.NetCore.ServerInteractive/Implements/Requester/StandardRequestServiceBase.cs +6 -1
@@ -15,11 +15,16 @@ public abstract class StandardRequestServiceBase : IStandardRequestService
15 15 /// <inheritdoc/>
16 16 public string DeviceInfo { get; set; } = string.Empty;
17 17 /// <inheritdoc/>
18 public string UnescapedResponse { get; set; }
19 /// <inheritdoc/>
20 public string Response { get; set; }
21 /// <inheritdoc/>
18 22 public object[] Parameters { get; set; } = [];
19 23 /// <inheritdoc/>
20 24 public XFEClientRequester XFEClientRequester { get; set; }
25
21 26 /// <inheritdoc/>
22 public abstract object AnalyzeResponse(string response);
27 public abstract object AnalyzeResponse();
23 28
24 29 /// <inheritdoc/>
25 30 public abstract object PostRequest();
Modified XFEExtension.NetCore.ServerInteractive/Interfaces/Requester/IStandardRequestService.cs +9 -2
@@ -18,6 +18,14 @@ public interface IStandardRequestService : IRequestServiceBase
18 18 /// </summary>
19 19 string Session { get; set; }
20 20 /// <summary>
21 /// 返回结果字符串(转义后)
22 /// </summary>
23 string UnescapedResponse { get; set; }
24 /// <summary>
25 /// 返回结果字符串
26 /// </summary>
27 string Response { get; set; }
28 /// <summary>
21 29 /// 待请求的方法的参数列表
22 30 /// </summary>
23 31 object[] Parameters { get; internal set; }
@@ -29,7 +37,6 @@ public interface IStandardRequestService : IRequestServiceBase
29 37 /// <summary>
30 38 /// 接收到返回后解析
31 39 /// </summary>
32 /// <param name="response"></param>
33 40 /// <returns></returns>
34 object AnalyzeResponse(string response);
41 object AnalyzeResponse();
35 42 }
Modified XFEExtension.NetCore.ServerInteractive/Options/XFEClientRequesterOptions.cs +0 -4
@@ -19,8 +19,4 @@ public class XFEClientRequesterOptions
19 19 /// 电脑信息
20 20 /// </summary>
21 21 public string DeviceInfo { get; set; } = DeviceHelper.GetUniqueHardwareId();
22 /// <summary>
23 /// 自动反转义响应内容(针对XFERequestService和XFEClientInstanceRequest的响应内容进行反转义处理,默认为true)
24 /// </summary>
25 public bool AutoUnescapeResponse { get; set; } = true;
26 22 }
Modified XFEExtension.NetCore.ServerInteractive/Utilities/Requester/Services/ClearLogRequestService.cs +1 -1
@@ -8,7 +8,7 @@ namespace XFEExtension.NetCore.ServerInteractive.Utilities.Requester.Services;
8 8 public class ClearLogRequestService : StandardRequestServiceBase
9 9 {
10 10 /// <inheritdoc/>
11 public override object AnalyzeResponse(string response) => true;
11 public override object AnalyzeResponse() => true;
12 12
13 13 /// <inheritdoc/>
14 14 public override object PostRequest() => new
Modified XFEExtension.NetCore.ServerInteractive/Utilities/Requester/Services/GetLogRequestService.cs +1 -1
@@ -8,7 +8,7 @@ namespace XFEExtension.NetCore.ServerInteractive.Utilities.Requester.Services;
8 8 public class GetLogRequestService : StandardRequestServiceBase
9 9 {
10 10 /// <inheritdoc/>
11 public override object AnalyzeResponse(string response) => response;
11 public override object AnalyzeResponse() => Response;
12 12
13 13 /// <inheritdoc/>
14 14 public override object PostRequest() => new
Modified XFEExtension.NetCore.ServerInteractive/Utilities/Requester/Services/LoginRequestService.cs +2 -2
@@ -18,9 +18,9 @@ public class LoginRequestService<T> : StandardRequestServiceBase where T : IUser
18 18 public LoginRequestService() => _jsonSerializerOptions.Converters.Add(new JsonDateTimeConverter());
19 19
20 20 /// <inheritdoc/>
21 public override object AnalyzeResponse(string response)
21 public override object AnalyzeResponse()
22 22 {
23 var result = JsonSerializer.Deserialize<UserLoginResult<T>>(response, _jsonSerializerOptions);
23 var result = JsonSerializer.Deserialize<UserLoginResult<T>>(Response, _jsonSerializerOptions);
24 24 Session = result!.Session;
25 25 return result;
26 26 }
Modified XFEExtension.NetCore.ServerInteractive/Utilities/Requester/Services/ReloginRequestService.cs +1 -1
@@ -16,7 +16,7 @@ public class ReloginRequestService<T> : StandardRequestServiceBase where T : IUs
16 16 /// </summary>
17 17 public ReloginRequestService() => _jsonSerializerOptions.Converters.Add(new JsonDateTimeConverter());
18 18 /// <inheritdoc/>
19 public override object AnalyzeResponse(string response) => JsonSerializer.Deserialize<T>(response, _jsonSerializerOptions)!;
19 public override object AnalyzeResponse() => JsonSerializer.Deserialize<T>(Response, _jsonSerializerOptions)!;
20 20
21 21 /// <inheritdoc/>
22 22 public override object PostRequest() => new
Modified XFEExtension.NetCore.ServerInteractive/Utilities/Requester/XFEClientRequester.cs +7 -13
@@ -1,7 +1,5 @@
1 using System.CodeDom.Compiler;
2 using System.Net;
1 using System.Net;
3 2 using System.Text.Json;
4 using System.Text.RegularExpressions;
5 3 using XFEExtension.NetCore.AutoImplement;
6 4 using XFEExtension.NetCore.DelegateExtension;
7 5 using XFEExtension.NetCore.ServerInteractive.Exceptions;
@@ -23,10 +21,6 @@ public abstract class XFEClientRequester : IRequesterBase
23 21 internal Dictionary<string, Func<IStandardRequestService>> StandardRequestServiceDictionary = [];
24 22 internal Dictionary<List<string>, Func<IStandardRequestService>> StandardMultiRequestServiceListDictionary = [];
25 23 internal Dictionary<string, StandardClientInstanceRequest> StandardClientInstanceRequestDictionary = [];
26 /// <summary>
27 /// 自动反转义响应内容(针对XFERequestService和XFEClientInstanceRequest的响应内容进行反转义处理,默认为true)
28 /// </summary>
29 public bool AutoUnescapeResponse { get; set; } = true;
30 24 /// <inheritdoc/>
31 25 public string RequestAddress { get; set; } = string.Empty;
32 26 /// <inheritdoc/>
@@ -83,7 +77,9 @@ public abstract class XFEClientRequester : IRequesterBase
83 77 result.StatusCode = code;
84 78 if (code == HttpStatusCode.OK)
85 79 {
86 var requestResult = xFEService.AnalyzeResponse(response);
80 xFEService.Response = response;
81 xFEService.UnescapedResponse = response;
82 var requestResult = xFEService.AnalyzeResponse();
87 83 MessageReceived?.Invoke(this, new ServerInteractiveEventArgsImpl("Success", code));
88 84 result.Message = "Success";
89 85 result.Result = requestResult;
@@ -98,8 +94,6 @@ public abstract class XFEClientRequester : IRequesterBase
98 94 {
99 95 var (response, code) = await InteractiveHelper.GetServerResponse(RequestAddress, instance.ConstructBody(Session, DeviceInfo, parameters), _jsonSerializerOptions);
100 96 result.StatusCode = code;
101 if (AutoUnescapeResponse)
102 response = Regex.Unescape(response);
103 97 if (code == HttpStatusCode.OK)
104 98 {
105 99 var requestResult = instance.ProcessResponse?.Invoke(response);
@@ -120,12 +114,12 @@ public abstract class XFEClientRequester : IRequesterBase
120 114 instance.DeviceInfo = DeviceInfo;
121 115 instance.Parameters = parameters;
122 116 var (response, code) = await InteractiveHelper.GetServerResponse(RequestAddress, instance.PostRequest(), _jsonSerializerOptions);
123 if (AutoUnescapeResponse)
124 response = Regex.Unescape(response);
125 117 result.StatusCode = code;
126 118 if (code == HttpStatusCode.OK)
127 119 {
128 var requestResult = instance.AnalyzeResponse(response);
120 instance.Response = response;
121 instance.UnescapedResponse = response;
122 var requestResult = instance.AnalyzeResponse();
129 123 MessageReceived?.Invoke(this, new ServerInteractiveEventArgsImpl("Success", code));
130 124 result.Message = "Success";
131 125 result.Result = requestResult;
Modified XFEExtension.NetCore.ServerInteractive/Utilities/Requester/XFEClientRequesterBuilder.cs +0 -1
@@ -113,7 +113,6 @@ public abstract class XFEClientRequesterBuilder : XFEBuilderBase<XFEClientReques
113 113 _xFEClientRequester.RequestAddress = options.RequestAddress;
114 114 _xFEClientRequester.Session = options.Session;
115 115 _xFEClientRequester.DeviceInfo = options.DeviceInfo;
116 _xFEClientRequester.AutoUnescapeResponse = options.AutoUnescapeResponse;
117 116 _xFEClientRequester.RequestServiceDictionary = _requestServiceDictionary;
118 117 _xFEClientRequester.StandardRequestServiceDictionary = _standardRequestServiceDictionary;
119 118 _xFEClientRequester.StandardMultiRequestServiceListDictionary = _standardMultiRequestServiceListDictionary;
Modified XFEExtension.NetCore.ServerInteractive/XFEExtension.NetCore.ServerInteractive.csproj +5 -5
@@ -5,7 +5,7 @@
5 5 <ImplicitUsings>enable</ImplicitUsings>
6 6 <Nullable>enable</Nullable>
7 7 <GenerateDocumentationFile>True</GenerateDocumentationFile>
8 <Version>2.3.1</Version>
8 <Version>2.4.0</Version>
9 9 <Title>XFEExtension.NetCore.ServerInteractive</Title>
10 10 <RepositoryUrl>https://github.com/XFEstudio/XFEExtension.NetCore.ServerInteractive</RepositoryUrl>
11 11 <AnalysisLevel>latest</AnalysisLevel>
@@ -21,11 +21,11 @@
21 21 <PackageReleaseNotes>
22 22 ## 调整
23 23
24 用户登录会话清理逻辑优化及依赖升级
24 重构响应处理,移除自动反转义,接口调整
25 25
26 - 增加对 XFEExtension.NetCore.StringExtension 的引用,支持字符串扩展方法。
27 - 优化 UserLoginAutoCleanService,清理 Uid 为空或全空白的无效会话。
28 - 项目版本升级至 2.3.1,并将 XFEExtension.NetCore 依赖提升至 4.2.*。
26 重构 IStandardRequestService 及其实现,新增 Response/UnescapedResponse 属性,AnalyzeResponse 方法不再传递参数,统一通过属性获取响应内容。
27 XFEClientRequester 移除 AutoUnescapeResponse 相关逻辑及配置项,响应处理更清晰。
28 版本号升级至 2.4.0。
29 29
30 30 ## 新增
31 31