summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ApiClient.csproj4
-rw-r--r--Feed.cs63
-rw-r--r--HyperBooru.cs2
3 files changed, 67 insertions, 2 deletions
diff --git a/ApiClient.csproj b/ApiClient.csproj
index b6f9619..6fec3e0 100644
--- a/ApiClient.csproj
+++ b/ApiClient.csproj
@@ -7,9 +7,9 @@
<AssemblyName>HyperBooru.ApiClient</AssemblyName>
<AssemblyTitle>HyperBooru.ApiClient</AssemblyTitle>
<RootNamespace>HyperBooru.ApiClient</RootNamespace>
- <AssemblyVersion>0.15.0.0</AssemblyVersion>
+ <AssemblyVersion>0.16.0.0</AssemblyVersion>
<FileVersion>$(AssemblyVersion)</FileVersion>
- <Version>0.15-alpha</Version>
+ <Version>0.16-alpha</Version>
</PropertyGroup>
<ItemGroup>
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<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[]>())!;
+ }
+}
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);
}