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();
}
}