summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ApiClient.csproj4
-rw-r--r--HyperBooru.cs2
-rw-r--r--User.cs41
3 files changed, 45 insertions, 2 deletions
diff --git a/ApiClient.csproj b/ApiClient.csproj
index 8cfe843..db8e34a 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.13.0.0</AssemblyVersion>
+ <AssemblyVersion>0.14.0.0</AssemblyVersion>
<FileVersion>$(AssemblyVersion)</FileVersion>
- <Version>0.13-alpha</Version>
+ <Version>0.14-alpha</Version>
</PropertyGroup>
<ItemGroup>
diff --git a/HyperBooru.cs b/HyperBooru.cs
index dac901a..4c41d96 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 User User { get; private init; }
public Uri BaseUri { get; private init; }
internal HttpClient HttpClient { get; private init; }
@@ -35,6 +36,7 @@ public sealed class HBSession : IDisposable {
Media = new(this);
Tag = new(this);
+ User = new(this);
}
public async Task LoginAsync(string username, string password) {
diff --git a/User.cs b/User.cs
new file mode 100644
index 0000000..f1e6d6f
--- /dev/null
+++ b/User.cs
@@ -0,0 +1,41 @@
+using System.Net.Http.Json;
+
+namespace HyperBooru.ApiClient;
+
+public class User {
+ private HBSession session;
+
+ internal User(HBSession session) =>
+ this.session = session;
+
+ public async Task<ApiModels.User[]> GetAllUsersAsync() =>
+ (await session.HttpClient.GetFromJsonAsync<ApiModels.User[]>("/api/user"))!;
+
+ public async Task<ApiModels.User> GetUserAsync(Guid userId) =>
+ (await session.HttpClient.GetFromJsonAsync<ApiModels.User>($"/api/user/{userId}"))!;
+
+ public async Task<ApiModels.User> CreateUserAsync(string username, string password) {
+ var user = new ApiModels.UserCreateRequest() {
+ Username = username,
+ Password = password
+ };
+
+ var response = await session.HttpClient.PostAsJsonAsync("/api/user", user);
+
+ return (await response.Content.ReadFromJsonAsync<ApiModels.User>())!;
+ }
+
+ public async Task<ApiModels.User> UpdateUserAsync(Guid userId, string? username, string? password) {
+ var user = new ApiModels.UserUpdateRequest() {
+ Username = username,
+ Password = password
+ };
+
+ var response = await session.HttpClient.PatchAsJsonAsync($"/api/user/{userId}", user);
+
+ return (await response.Content.ReadFromJsonAsync<ApiModels.User>())!;
+ }
+
+ public async Task<ApiModels.User> DeleteUserAsync(Guid userId) =>
+ (await session.HttpClient.DeleteFromJsonAsync<ApiModels.User>($"/api/user/{userId}"))!;
+}