summaryrefslogtreecommitdiff
path: root/Feed.cs
blob: e6492ff73fac8d99095a035e73ab0df41e7729c5 (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
57
58
59
60
61
62
63
using HyperBooru.ApiModels;
using System.Net.Http.Json;

namespace HyperBooru.ApiClient;

public class Feed {
    private HBSession session;

    internal Feed(HBSession session) =>
        this.session = session;

    public async Task<Guid[]> LoadChunkAsync(
        bool selectIngest       = false,
        bool includeNsfw        = false,
        int count               = 50,
        SortOrder sortOrder     = SortOrder.ObjectId,
        Guid? continuationToken = null
        ) => await LoadChunkAsync(new FeedRequest {
            SelectIngest      = selectIngest,
            IncludeNsfw       = includeNsfw,
            Count             = count,
            SortOrder         = sortOrder,
            ContinuationToken = continuationToken
        });

    public async Task<Guid[]> LoadChunkAsync(
        Guid tagId,
        bool selectIngest       = false,
        bool includeNsfw        = false,
        int count               = 50,
        SortOrder sortOrder     = SortOrder.ObjectId,
        Guid? continuationToken = null
        ) => await LoadChunkAsync(new FeedTagRequest {
            SelectIngest      = selectIngest,
            IncludeNsfw       = includeNsfw,
            Count             = count,
            SortOrder         = sortOrder,
            ContinuationToken = continuationToken,
            TagId             = tagId
        });

    public async Task<Guid[]> LoadChunkAsync(
        string query,
        bool selectIngest       = false,
        bool includeNsfw        = false,
        int count               = 50,
        SortOrder sortOrder     = SortOrder.ObjectId,
        Guid? continuationToken = null
        ) => await LoadChunkAsync(new FeedSearchRequest {
            SelectIngest      = selectIngest,
            IncludeNsfw       = includeNsfw,
            Count             = count,
            SortOrder         = sortOrder,
            ContinuationToken = continuationToken,
            Query             = query
        });

    public async Task<Guid[]> LoadChunkAsync(FeedRequest feedRequest) {
        var response = await session.HttpClient.PostAsJsonAsync("/api/feed", feedRequest);

        return (await response.Content.ReadFromJsonAsync<Guid[]>())!;
    }
}