using HyperBooru.ApiModels; using System.Net.Http.Json; namespace HyperBooru.ApiClient; public class Tag { private HBSession session; internal Tag(HBSession session) => this.session = session; public async Task GetTagDefinitionAsync() => (await session.HttpClient.GetFromJsonAsync("/api/tag/definition"))!; public async Task GetTagDefinitionAsync(Guid tagDefinitionId) => (await session.HttpClient .GetFromJsonAsync($"/api/tag/definition/{tagDefinitionId}"))!; public async Task CreateTagDefinitionAsync(TagCreateRequest request) { var response = await session.HttpClient.PostAsJsonAsync("/api/tag/definition", request); return (await response.Content.ReadFromJsonAsync())!; } public async Task DeleteTagDefinitionAsync(Guid tagDefinitionId) => await session.HttpClient.DeleteAsync($"/api/tag/definition/{tagDefinitionId}"); public async Task UpdateTagDefinitionAsync( Guid tagDefinitionId, TagUpdateRequest request) { var response = await session.HttpClient.PatchAsJsonAsync( $"/api/tag/definition/{tagDefinitionId}", request); return (await response.Content.ReadFromJsonAsync())!; } public async Task AddImplicitTagsAsync(Guid tagDefinitionId, Guid[] implicitTagIds) => await session.HttpClient.PatchAsJsonAsync( $"/api/tag/definition/{tagDefinitionId}/implicit", implicitTagIds); public async Task ReplaceImplicitTagsAsync(Guid tagDefinitionId, Guid[] implicitTagIds) => await session.HttpClient.PutAsJsonAsync( $"/api/tag/definition/{tagDefinitionId}/implicit", implicitTagIds); public async Task DeleteImplicitTagAsync( Guid tagDefinitionId, Guid[] implicitTagIds) { await session.HttpClient.PostAsJsonAsync( $"/api/tag/definition/{tagDefinitionId}/implicit/delete", implicitTagIds); } }