using JSMR.Application.Circles.Queries.Search; using JSMR.Application.Creators.Commands.UpdateCreatorStatus; using JSMR.Application.Creators.Queries.Search; using JSMR.Application.Tags.Commands.SetEnglishName; using JSMR.Application.Tags.Commands.UpdateTagStatus; using JSMR.Application.Tags.Queries.Search; using JSMR.Application.VoiceWorks.Commands.Delete; using JSMR.Application.VoiceWorks.Commands.SetFavorite; using JSMR.Application.VoiceWorks.Queries.Search; using System.Net.Http.Json; using System.Text.Json; using System.Text.Json.Serialization; namespace JSMR.UI.Blazor.Services; public class VoiceWorksClient(HttpClient http) { private static readonly JsonSerializerOptions JsonOptions = new(JsonSerializerDefaults.Web) { Converters = { new JsonStringEnumConverter() } }; public async Task SearchAsync(SearchVoiceWorksRequest request, CancellationToken ct = default) { using var resp = await http.PostAsJsonAsync("/api/voiceworks/search", request, ct); return await resp.Content.ReadFromJsonAsync(JsonOptions, cancellationToken: ct); } public async Task SearchAsync(SearchCirclesRequest request, CancellationToken ct = default) { using var resp = await http.PostAsJsonAsync("/api/circles/search", request, ct); return await resp.Content.ReadFromJsonAsync(JsonOptions, cancellationToken: ct); } public async Task SearchAsync(SearchCreatorsRequest request, CancellationToken ct = default) { using var resp = await http.PostAsJsonAsync("/api/creators/search", request, ct); return await resp.Content.ReadFromJsonAsync(JsonOptions, cancellationToken: ct); } public async Task SearchAsync(SearchTagsRequest request, CancellationToken ct = default) { using var resp = await http.PostAsJsonAsync("/api/tags/search", request, ct); return await resp.Content.ReadFromJsonAsync(JsonOptions, cancellationToken: ct); } public async Task SetVoiceWorkFavoriteeAsync(SetVoiceWorkFavoriteRequest request, CancellationToken ct = default) { using var resp = await http.PostAsJsonAsync("/api/voicework/set-favorite", request, ct); return await resp.Content.ReadFromJsonAsync(JsonOptions, cancellationToken: ct); } public async Task DeleteVoiceWorkAsync(DeleteVoiceWorkRequest request, CancellationToken ct = default) { using var resp = await http.PostAsJsonAsync("/api/voicework/delete", request, ct); return await resp.Content.ReadFromJsonAsync(JsonOptions, cancellationToken: ct); } public async Task UpdateTagStatusAsync(UpdateTagStatusRequest request, CancellationToken ct = default) { using var resp = await http.PostAsJsonAsync("/api/tags/update-status", request, ct); return await resp.Content.ReadFromJsonAsync(JsonOptions, cancellationToken: ct); } public async Task SetTagEnglishNameAsync(SetTagEnglishNameRequest request, CancellationToken ct = default) { using var resp = await http.PostAsJsonAsync("/api/tags/set-english-name", request, ct); return await resp.Content.ReadFromJsonAsync(JsonOptions, cancellationToken: ct); } public async Task UpdateCreatorStatusAsync(UpdateCreatorStatusRequest request, CancellationToken ct = default) { using var resp = await http.PostAsJsonAsync("/api/creators/update-status", request, ct); return await resp.Content.ReadFromJsonAsync(JsonOptions, cancellationToken: ct); } }