summaryrefslogtreecommitdiff
path: root/Tag.cs
blob: 7dfb43aa591632d5f3b6c31cbceb8f187b2e818c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
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<ApiModels.TagDefinition[]> GetTagDefinitionAsync() =>
        (await session.HttpClient.GetFromJsonAsync<ApiModels.TagDefinition[]>("/api/tag/definition"))!;

    public async Task<ApiModels.TagDefinition> GetTagDefinitionAsync(Guid tagDefinitionId) =>
        (await session.HttpClient
            .GetFromJsonAsync<ApiModels.TagDefinition>($"/api/tag/definition/{tagDefinitionId}"))!;

    public async Task<TagDefinition> CreateTagDefinitionAsync(TagCreateRequest request) {
        var response = await session.HttpClient.PostAsJsonAsync("/api/tag/definition", request);
        return (await response.Content.ReadFromJsonAsync<TagDefinition>())!;
    }

    public async Task DeleteTagDefinitionAsync(Guid tagDefinitionId) =>
        await session.HttpClient.DeleteAsync($"/api/tag/definition/{tagDefinitionId}");

    public async Task<TagDefinition> UpdateTagDefinitionAsync(
        Guid tagDefinitionId,
        TagUpdateRequest request) {

        var response = await session.HttpClient.PatchAsJsonAsync(
            $"/api/tag/definition/{tagDefinitionId}",
            request);

        return (await response.Content.ReadFromJsonAsync<TagDefinition>())!;
    }

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