diff options
| author | Jake Mannens <jake@asger.xyz> | 2026-05-07 23:07:45 +1000 |
|---|---|---|
| committer | Jake Mannens <jake@asger.xyz> | 2026-05-08 01:27:27 +1000 |
| commit | 1c2427084ba610553c49140a2ce604fa63ba37c9 (patch) | |
| tree | 2ba363154692b469ea2f8568c8825051fd293ecb | |
| parent | 4d3e88b9f54e893a6de49724538cd73c9dc6ea5f (diff) | |
v0.14av0.14a
| -rw-r--r-- | ApiClient.csproj | 4 | ||||
| -rw-r--r-- | HyperBooru.cs | 2 | ||||
| -rw-r--r-- | User.cs | 41 |
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) { @@ -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}"))!; +} |
