XFEExtension.NetCore.ServerInteractive
[DLL] Server interaction extension, including user identity verification and querying in conjunction with AutoConfig
关注
0
Fork
0
Star
0
返回提交历史
Modified
XFEExtension.NetCore.ServerInteractive/Interfaces/Requester/IRequestServiceBase.cs
+0
-4
Modified
XFEExtension.NetCore.ServerInteractive/Interfaces/Requester/IXFERequestService.cs
+8
-1
Modified
XFEExtension.NetCore.ServerInteractive/Utilities/Requester/XFEClientRequester.cs
+40
-6
XFEstudio/XFEExtension.NetCore.ServerInteractive
完善部分逻辑交互
940b823
代码差异
3 个文件
+48
-11
@@ -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>
@@ -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
}
@@ -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
}