using System.Text.Json;
using Yh.Platform.Abstractions;
namespace Yh.Platform.OpenApi;
/// 的 HTTP 实现(镜像 Java DefaultOpenApiGroupClient)。
public class OpenApiGroupClient : OpenApiClientBase, IOpenApiGroupClient
{
public OpenApiGroupClient(HttpClient httpClient, OpenApiOptions options)
: base(httpClient, options)
{
}
public Task GetGroupTreeAsync(CancellationToken ct = default)
=> ResolveAsync(HttpMethod.Get, Prefix + "/group/tree", ct: ct);
public Task GetGroupByIdAsync(int? groupId, bool? withSub = null, CancellationToken ct = default)
=> ResolveAsync(HttpMethod.Get, Prefix + "/group/byId",
Params(("groupId", groupId), ("withSub", withSub)), ct: ct);
public Task> GetGroupListAsync(string ids, bool? withSub = null, CancellationToken ct = default)
=> ResolveListAsync(HttpMethod.Get, Prefix + "/group/list",
Params(("ids", ids), ("withSub", withSub)), ct: ct);
public Task AddGroupAsync(SysGroupRequest request, CancellationToken ct = default)
=> ResolveAsync(HttpMethod.Post, Prefix + "/group/add", body: request, ct: ct);
public Task EditGroupAsync(int id, SysGroupRequest request, CancellationToken ct = default)
=> ResolveAsync(HttpMethod.Post, Prefix + "/group/edit/" + id, body: request, ct: ct);
public Task DeleteGroupAsync(int id, int schoolId, CancellationToken ct = default)
=> ResolveVoidAsync(HttpMethod.Post, Prefix + "/group/delete/" + id + "/" + schoolId, ct: ct);
public Task> BatchAddGroupsAsync(SysGroupBatchRequest request, CancellationToken ct = default)
=> ResolveListAsync(HttpMethod.Post, Prefix + "/group/batchAdd", body: request, ct: ct);
public Task MoveGroupAsync(int schoolId, SysGroupMoveRequest request, CancellationToken ct = default)
=> ResolveVoidAsync(HttpMethod.Post, Prefix + "/group/move/" + schoolId, body: request, ct: ct);
}
/// 的 HTTP 实现(镜像 Java DefaultOpenApiAppClient)。
public class OpenApiAppClient : OpenApiClientBase, IOpenApiAppClient
{
public OpenApiAppClient(HttpClient httpClient, OpenApiOptions options)
: base(httpClient, options)
{
}
public Task GetAppByIdAsync(string appId, CancellationToken ct = default)
=> SendAsync(HttpMethod.Get, Prefix + "/app/" + Uri.EscapeDataString(appId), ct: ct);
public Task> GetUserAppAsync(int userId, ClientEnum clientType, CancellationToken ct = default)
=> ResolveListAsync(HttpMethod.Get, Prefix + "/app/list",
Params(("userId", userId), ("clientType", (int)clientType)), ct: ct);
}