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

完善部分逻辑交互

940b823
XFE工作室室长 <mail@xfegzs.com>
提交于

代码差异

3 个文件 +48 -11
Modified XFEExtension.NetCore.ServerInteractive/Interfaces/Requester/IRequestServiceBase.cs +0 -4
@@ -7,10 +7,6 @@ namespace XFEExtension.NetCore.ServerInteractive.Interfaces.Requester;
7 7 /// </summary>
8 8 public interface IRequestServiceBase
9 9 {
10 /// <summary>
11 /// 获取请求地址
12 /// </summary>
13 Func<string> GetRequestAddress { get; set; }
14 10 /// <summary>
15 11 /// XFE客户端请求器
16 12 /// </summary>
Modified XFEExtension.NetCore.ServerInteractive/Interfaces/Requester/IXFERequestService.cs +8 -1
@@ -18,5 +18,12 @@ public interface IXFERequestService : IRequestServiceBase
18 18 /// </summary>
19 19 /// <param name="parameters"></param>
20 20 /// <returns></returns>
21 object PostRequestBody(params object[] parameters);
21 object PostRequest(params object[] parameters);
22 /// <summary>
23 /// 接收到返回后解析
24 /// </summary>
25 /// <typeparam name="T"></typeparam>
26 /// <param name="response"></param>
27 /// <returns></returns>
28 Task<T> AnalyzeResponse<T>(string response);
22 29 }
Modified XFEExtension.NetCore.ServerInteractive/Utilities/Requester/XFEClientRequester.cs +40 -6
@@ -1,10 +1,13 @@
1 using System.Text.Json;
1 using System.Net;
2 using System.Text.Json;
2 3 using XFEExtension.NetCore.AutoImplement;
3 4 using XFEExtension.NetCore.DelegateExtension;
4 5 using XFEExtension.NetCore.ServerInteractive.Exceptions;
5 6 using XFEExtension.NetCore.ServerInteractive.Interfaces.Requester;
6 7 using XFEExtension.NetCore.ServerInteractive.Models.RequesterModels;
8 using XFEExtension.NetCore.ServerInteractive.Utilities.Helpers;
7 9 using XFEExtension.NetCore.ServerInteractive.Utilities.JsonConverter;
10 using XFEExtension.NetCore.StringExtension.Json;
8 11
9 12 namespace XFEExtension.NetCore.ServerInteractive.Utilities.Requester;
10 13
@@ -18,6 +21,10 @@ public abstract class XFEClientRequester
18 21 internal Dictionary<string, IRequestService> requestServiceDictionary = [];
19 22 internal Dictionary<string, IXFERequestService> xFERequestServiceDictionary = [];
20 23 /// <summary>
24 /// 请求地址
25 /// </summary>
26 public string RequestAddress { get; set; } = string.Empty;
27 /// <summary>
21 28 /// 请求消息返回事件
22 29 /// </summary>
23 30 public event XFEEventHandler<object?, ServerInteractiveEventArgs>? MessageReceived;
@@ -37,16 +44,43 @@ public abstract class XFEClientRequester
37 44
38 45 private void TableRequester_MessageReceived(object? sender, ServerInteractiveEventArgs e) => MessageReceived?.Invoke(sender, e);
39 46
47 /// <summary>
48 /// 请求
49 /// </summary>
50 /// <typeparam name="T"></typeparam>
51 /// <param name="serviceName"></param>
52 /// <param name="parameters"></param>
53 /// <returns></returns>
54 /// <exception cref="XFERequesterException"></exception>
40 55 public async Task<T> Request<T>(string serviceName, params object[] parameters)
41 56 {
42 if (requestServiceDictionary.TryGetValue(serviceName, out var service))
57 try
43 58 {
44 return await service.Request<T>();
59 if (requestServiceDictionary.TryGetValue(serviceName, out var service))
60 {
61 return await service.Request<T>(parameters);
62 }
63 else if (xFERequestServiceDictionary.TryGetValue(serviceName, out var xFEService))
64 {
65 var (response, code) = await InteractiveHelper.GetServerResponse(RequestAddress, xFEService.PostRequest(parameters).ToJson());
66 if (code == HttpStatusCode.OK)
67 {
68 var result = await xFEService.AnalyzeResponse<T>(response);
69 MessageReceived?.Invoke(this, new ServerInteractiveEventArgsImpl("Success", code));
70 return result;
71 }
72 else
73 {
74 MessageReceived?.Invoke(this, new ServerInteractiveEventArgsImpl(response, code));
75 return default!;
76 }
77 }
45 78 }
46 else if (xFERequestServiceDictionary.TryGetValue(serviceName, out var xFEService))
79 catch (Exception ex)
47 80 {
48
81 MessageReceived?.Invoke(this, new ServerInteractiveEventArgsImpl(ex.Message, HttpStatusCode.InternalServerError));
82 return default!;
49 83 }
50 throw new XFERequesterException();
84 throw new XFERequesterException("请求的方法未注册");
51 85 }
52 86 }