diff options
Diffstat (limited to 'User.cs')
| -rw-r--r-- | User.cs | 41 |
1 files changed, 41 insertions, 0 deletions
@@ -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}"))!; +} |
