From 532b46dfe288e31607f0362626d6b7b81b3c2948 Mon Sep 17 00:00:00 2001 From: Jake Mannens Date: Wed, 13 May 2026 00:47:55 +1000 Subject: v0.16a --- ApiClient.csproj | 4 ++-- Feed.cs | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ HyperBooru.cs | 2 ++ 3 files changed, 67 insertions(+), 2 deletions(-) create mode 100644 Feed.cs diff --git a/ApiClient.csproj b/ApiClient.csproj index b6f9619..6fec3e0 100644 --- a/ApiClient.csproj +++ b/ApiClient.csproj @@ -7,9 +7,9 @@ HyperBooru.ApiClient HyperBooru.ApiClient HyperBooru.ApiClient - 0.15.0.0 + 0.16.0.0 $(AssemblyVersion) - 0.15-alpha + 0.16-alpha diff --git a/Feed.cs b/Feed.cs new file mode 100644 index 0000000..e6492ff --- /dev/null +++ b/Feed.cs @@ -0,0 +1,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 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 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 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 LoadChunkAsync(FeedRequest feedRequest) { + var response = await session.HttpClient.PostAsJsonAsync("/api/feed", feedRequest); + + return (await response.Content.ReadFromJsonAsync())!; + } +} diff --git a/HyperBooru.cs b/HyperBooru.cs index 4c41d96..b07351d 100644 --- a/HyperBooru.cs +++ b/HyperBooru.cs @@ -7,6 +7,7 @@ namespace HyperBooru.ApiClient; public sealed class HBSession : IDisposable { public Media Media { get; private init; } public Tag Tag { get; private init; } + public Feed Feed { get; private init; } public User User { get; private init; } public Uri BaseUri { get; private init; } @@ -36,6 +37,7 @@ public sealed class HBSession : IDisposable { Media = new(this); Tag = new(this); + Feed = new(this); User = new(this); } -- cgit v1.3