XFEExtension.NetCore.ServerInteractive
[DLL] Server interaction extension, including user identity verification and querying in conjunction with AutoConfig
关注
0
Fork
0
Star
0
返回提交历史
Added
XFEExtension.NetCore.ServerInteractive/Implements/Requester/XFERequestServiceBase.cs
+22
-0
Added
XFEExtension.NetCore.ServerInteractive/Interfaces/Requester/IRequestResult.cs
+13
-0
Added
XFEExtension.NetCore.ServerInteractive/Interfaces/Requester/IRequestResultBase.cs
+22
-0
Modified
XFEExtension.NetCore.ServerInteractive/Interfaces/Requester/IRequestService.cs
+5
-2
Added
XFEExtension.NetCore.ServerInteractive/Interfaces/Requester/IRequesterBase.cs
+27
-0
Modified
XFEExtension.NetCore.ServerInteractive/Interfaces/Requester/IXFERequestService.cs
+3
-3
Added
XFEExtension.NetCore.ServerInteractive/Models/RequesterModels/ClientRequestResult.cs
+32
-0
Added
XFEExtension.NetCore.ServerInteractive/Utilities/Requester/Serviecs/LoginRequestService.cs
+27
-0
Added
XFEExtension.NetCore.ServerInteractive/Utilities/Requester/Serviecs/ReloginRequestService.cs
+21
-0
Modified
XFEExtension.NetCore.ServerInteractive/Utilities/Requester/XFEClientRequester.cs
+26
-20
XFEstudio/XFEExtension.NetCore.ServerInteractive
添加部分请求器功能
5cf0fe4
代码差异
10 个文件
+198
-25
@@ -0,0 +1,22 @@
1
using XFEExtension.NetCore.ServerInteractive.Interfaces.Requester;
2
using XFEExtension.NetCore.ServerInteractive.Utilities.Requester;
3
4
namespace XFEExtension.NetCore.ServerInteractive.Implements.Requester;
5
6
/// <summary>
7
/// XFE请求服务基类
8
/// </summary>
9
public abstract class XFERequestServiceBase : IXFERequestService
10
{
11
/// <inheritdoc/>
12
public Func<string> GetSession { get; set; } = () => string.Empty;
13
/// <inheritdoc/>
14
public Func<string> GetComputerInfo { get; set; } = () => string.Empty;
15
/// <inheritdoc/>
16
public XFEClientRequester XFEClientRequester { get; set; }
17
18
/// <inheritdoc/>
19
public abstract object AnalyzeResponse(string response);
20
/// <inheritdoc/>
21
public abstract object PostRequest(string execute, params object[] parameters);
22
}
@@ -0,0 +1,13 @@
1
namespace XFEExtension.NetCore.ServerInteractive.Interfaces.Requester;
2
3
/// <summary>
4
/// 请求结果接口
5
/// </summary>
6
/// <typeparam name="T"></typeparam>
7
public interface IRequestResult<T> : IRequestResultBase
8
{
9
/// <summary>
10
/// 结果
11
/// </summary>
12
new T Result { get; set; }
13
}
@@ -0,0 +1,22 @@
1
using System.Net;
2
3
namespace XFEExtension.NetCore.ServerInteractive.Interfaces.Requester;
4
5
/// <summary>
6
/// 请求结果基接口
7
/// </summary>
8
public interface IRequestResultBase
9
{
10
/// <summary>
11
/// 状态码
12
/// </summary>
13
HttpStatusCode StatusCode { get; set; }
14
/// <summary>
15
/// 消息
16
/// </summary>
17
string Message { get; set; }
18
/// <summary>
19
/// 结果
20
/// </summary>
21
object? Result { get; set; }
22
}
@@ -1,4 +1,6 @@
1
namespace XFEExtension.NetCore.ServerInteractive.Interfaces.Requester;
1
using XFEExtension.NetCore.ServerInteractive.Models.RequesterModels;
2
3
namespace XFEExtension.NetCore.ServerInteractive.Interfaces.Requester;
2
4
3
5
/// <summary>
4
6
/// 请求服务
@@ -8,7 +10,8 @@ public interface IRequestService : IRequestServiceBase
8
10
/// <summary>
9
11
/// 请求
10
12
/// </summary>
13
/// <typeparam name="T">请求结果泛型</typeparam>
11
14
/// <param name="parameters"></param>
12
15
/// <returns></returns>
13
Task<T> Request<T>(params object[] parameters);
16
Task<ClientRequestResult<T>> Request<T>(params object[] parameters);
14
17
}
@@ -0,0 +1,27 @@
1
using XFEExtension.NetCore.DelegateExtension;
2
using XFEExtension.NetCore.ServerInteractive.Models.RequesterModels;
3
4
namespace XFEExtension.NetCore.ServerInteractive.Interfaces.Requester;
5
6
/// <summary>
7
/// 请求器基接口
8
/// </summary>
9
public interface IRequesterBase
10
{
11
/// <summary>
12
/// 请求地址
13
/// </summary>
14
string RequestAddress { get; set; }
15
/// <summary>
16
/// 本次会话Session
17
/// </summary>
18
string Session { get; set; }
19
/// <summary>
20
/// 电脑信息
21
/// </summary>
22
string ComputerInfo { get; set; }
23
/// <summary>
24
/// 请求消息返回事件
25
/// </summary>
26
public event XFEEventHandler<object?, ServerInteractiveEventArgs>? MessageReceived;
27
}
@@ -16,14 +16,14 @@ public interface IXFERequestService : IRequestServiceBase
16
16
/// <summary>
17
17
/// 提交请求体
18
18
/// </summary>
19
/// <param name="execute">执行的操作名称</param>
19
20
/// <param name="parameters"></param>
20
21
/// <returns></returns>
21
object PostRequest(params object[] parameters);
22
object PostRequest(string execute, params object[] parameters);
22
23
/// <summary>
23
24
/// 接收到返回后解析
24
25
/// </summary>
25
/// <typeparam name="T"></typeparam>
26
26
/// <param name="response"></param>
27
27
/// <returns></returns>
28
Task<T> AnalyzeResponse<T>(string response);
28
object AnalyzeResponse(string response);
29
29
}
@@ -0,0 +1,32 @@
1
using System.Net;
2
using XFEExtension.NetCore.ServerInteractive.Interfaces.Requester;
3
4
namespace XFEExtension.NetCore.ServerInteractive.Models.RequesterModels;
5
6
/// <summary>
7
/// 客户端请求结果
8
/// </summary>
9
/// <typeparam name="T"></typeparam>
10
public class ClientRequestResult<T> : IRequestResult<T>
11
{
12
/// <inheritdoc/>
13
public T Result { get; set; }
14
/// <inheritdoc/>
15
public HttpStatusCode StatusCode { get; set; } = HttpStatusCode.OK;
16
/// <inheritdoc/>
17
public string Message { get; set; } = string.Empty;
18
/// <inheritdoc/>
19
object? IRequestResultBase.Result { get => Result; set => Result = (T)value!; }
20
21
/// <summary>
22
/// 转换为指定泛型
23
/// </summary>
24
/// <typeparam name="F">指定泛型</typeparam>
25
/// <returns></returns>
26
public ClientRequestResult<F> ConvertTo<F>() => new()
27
{
28
Message = Message,
29
StatusCode = StatusCode,
30
Result = (F)(object)Result!
31
};
32
}
@@ -0,0 +1,27 @@
1
using XFEExtension.NetCore.ServerInteractive.Implements.Requester;
2
using XFEExtension.NetCore.XFETransform.JsonConverter;
3
4
namespace XFEExtension.NetCore.ServerInteractive.Utilities.Requester.Serviecs;
5
6
/// <summary>
7
/// 登录请求服务
8
/// </summary>
9
public class LoginRequestService : XFERequestServiceBase
10
{
11
/// <inheritdoc/>
12
public override object AnalyzeResponse(string response)
13
{
14
QueryableJsonNode jsonNode = response;
15
var session = jsonNode["session"];
16
XFEClientRequester.Session = session;
17
return (session, jsonNode["expireDate"]);
18
}
19
20
/// <inheritdoc/>
21
public override object PostRequest(string execute, params object[] parameters) => new
22
{
23
execute,
24
account = parameters[0],
25
password = parameters[1]
26
};
27
}
@@ -0,0 +1,21 @@
1
using XFEExtension.NetCore.ServerInteractive.Implements.Requester;
2
3
namespace XFEExtension.NetCore.ServerInteractive.Utilities.Requester.Serviecs;
4
5
/// <summary>
6
/// 登录校验请求服务
7
/// </summary>
8
public class ReloginRequestService : XFERequestServiceBase
9
{
10
/// <inheritdoc/>
11
public override object AnalyzeResponse(string response)
12
{
13
throw new NotImplementedException();
14
}
15
16
/// <inheritdoc/>
17
public override object PostRequest(string execute, params object[] parameters)
18
{
19
20
}
21
}
@@ -15,23 +15,19 @@ namespace XFEExtension.NetCore.ServerInteractive.Utilities.Requester;
15
15
/// XFE客户端请求器
16
16
/// </summary>
17
17
[CreateImpl]
18
public abstract class XFEClientRequester
18
public abstract class XFEClientRequester : IRequesterBase
19
19
{
20
20
readonly JsonSerializerOptions jsonSerializerOptions = new();
21
21
internal Dictionary<string, IRequestService> requestServiceDictionary = [];
22
22
internal Dictionary<string, IXFERequestService> xFERequestServiceDictionary = [];
23
/// <summary>
24
/// 请求地址
25
/// </summary>
23
/// <inheritdoc/>
26
24
public string RequestAddress { get; set; } = string.Empty;
27
/// <summary>
28
/// 请求消息返回事件
29
/// </summary>
25
/// <inheritdoc/>
26
public string Session { get; set; } = string.Empty;
27
/// <inheritdoc/>
28
public string ComputerInfo { get; set; } = string.Empty;
29
/// <inheritdoc/>
30
30
public event XFEEventHandler<object?, ServerInteractiveEventArgs>? MessageReceived;
31
/// <summary>
32
/// 表格请求器
33
/// </summary>
34
public TableRequester TableRequester { get; set; } = new();
35
31
36
32
/// <summary>
37
33
/// XFE客户端请求器
@@ -39,11 +35,8 @@ public abstract class XFEClientRequester
39
35
public XFEClientRequester()
40
36
{
41
37
jsonSerializerOptions.Converters.Add(new JsonDateTimeConverter());
42
TableRequester.MessageReceived += TableRequester_MessageReceived;
43
38
}
44
39
45
private void TableRequester_MessageReceived(object? sender, ServerInteractiveEventArgs e) => MessageReceived?.Invoke(sender, e);
46
47
40
/// <summary>
48
41
/// 请求
49
42
/// </summary>
@@ -52,28 +45,41 @@ public abstract class XFEClientRequester
52
45
/// <param name="parameters"></param>
53
46
/// <returns></returns>
54
47
/// <exception cref="XFERequesterException"></exception>
55
public async Task<T> Request<T>(string serviceName, params object[] parameters)
48
public async Task<ClientRequestResult<T>> Request<T>(string serviceName, params object[] parameters) => (await Request(serviceName, parameters)).ConvertTo<T>();
49
50
/// <summary>
51
/// 请求
52
/// </summary>
53
/// <param name="serviceName"></param>
54
/// <param name="parameters"></param>
55
/// <returns></returns>
56
/// <exception cref="XFERequesterException"></exception>
57
public async Task<ClientRequestResult<object>> Request(string serviceName, params object[] parameters)
56
58
{
57
59
try
58
60
{
59
61
if (requestServiceDictionary.TryGetValue(serviceName, out var service))
60
62
{
61
return await service.Request<T>(parameters);
63
return await service.Request<object>(parameters);
62
64
}
63
65
else if (xFERequestServiceDictionary.TryGetValue(serviceName, out var xFEService))
64
66
{
65
var (response, code) = await InteractiveHelper.GetServerResponse(RequestAddress, xFEService.PostRequest(parameters).ToJson());
67
var result = new ClientRequestResult<object>();
68
var (response, code) = await InteractiveHelper.GetServerResponse(RequestAddress, xFEService.PostRequest(serviceName, parameters).ToJson());
69
result.StatusCode = code;
66
70
if (code == HttpStatusCode.OK)
67
71
{
68
var result = await xFEService.AnalyzeResponse<T>(response);
72
var requestResult = xFEService.AnalyzeResponse(response);
69
73
MessageReceived?.Invoke(this, new ServerInteractiveEventArgsImpl("Success", code));
70
return result;
74
result.Message = "Success";
75
result.Result = requestResult;
71
76
}
72
77
else
73
78
{
74
79
MessageReceived?.Invoke(this, new ServerInteractiveEventArgsImpl(response, code));
75
return default!;
80
result.Message = response;
76
81
}
82
return result;
77
83
}
78
84
}
79
85
catch (Exception ex)