using System.Text.Json; using XFEExtension.NetCore.ServerInteractive.Interfaces; using XFEExtension.NetCore.ServerInteractive.Models; using XFEExtension.NetCore.ServerInteractive.Utilities.JsonConverter; using XFEExtension.NetCore.ServerInteractive.Utilities.Requester; using XFEExtension.NetCore.ServerInteractive.Utilities.Requester.Services; namespace XFEExtension.NetCore.ServerInteractive.Utilities.Extensions; /// /// 客户端请求器构建器扩展 /// public static class ClientRequesterBuilderExtensions { private static readonly JsonSerializerOptions JsonSerializerOptions = new(); static ClientRequesterBuilderExtensions() => JsonSerializerOptions.Converters.Add(new JsonDateTimeConverter()); /// extension(ClientRequesterBuilder xFEClientRequesterBuilder) { /// /// 添加连接检查请求 /// /// public ClientRequesterBuilder AddCheckConnectRequest() => xFEClientRequesterBuilder.AddRequest("check_connect", static (_, _, _) => new { execute = "check_connect" }, response => DateTime.Parse(response)); /// /// 添加日志请求 /// /// public ClientRequesterBuilder AddLogRequest() => xFEClientRequesterBuilder.AddRequest(); /// /// 添加IP封禁请求 /// /// public ClientRequesterBuilder AddBannedIPRequest() => xFEClientRequesterBuilder.AddRequest("get_bannedIPList", static (session, deviceInfo, _) => new { execute = "get_bannedIPList", session, deviceInfo }, static response => JsonSerializer.Deserialize>(response, JsonSerializerOptions)!).AddRequest("add_bannedIP", static (session, deviceInfo, parameters) => new { execute = "add_bannedIP", session, deviceInfo, bannedIP = parameters[0], notes = parameters[1] }, static response => response).AddRequest("remove_bannedIP", static (session, deviceInfo, parameters) => new { execute = "remove_bannedIP", session, deviceInfo, bannedIP = parameters[0] }, static response => bool.Parse(response)); /// /// 添加登录服务 /// /// 登录返回用户接口类型 /// public ClientRequesterBuilder AddLoginRequest() where T : IUserFaceInfo => xFEClientRequesterBuilder.AddRequest>(); /// /// 使用XFE标准服务器服务请求 /// /// 登录返回用户接口类型 /// public ClientRequesterBuilder UseXFEStandardRequest() where T : IUserFaceInfo => xFEClientRequesterBuilder.AddLoginRequest() .AddBannedIPRequest() .AddLogRequest() .AddCheckConnectRequest(); } }