using FNZCM.Shared.MediaModels; using FNZCM.Shared.MetadataModels; using Microsoft.AspNetCore.Components; using Newtonsoft.Json; using System.Net.Http.Json; namespace FNZCM.BlazorWasm.Helpers { public class ApiClient { public NavigationManager NavManager { get; set; } public ApiClient(NavigationManager nav) => NavManager = nav; public string ApiBase { get { #if DEBUG return $"http://fnz-server"; #endif return $"{NavManager.ToAbsoluteUri("/").GetLeftPart(UriPartial.Scheme | UriPartial.Authority)}"; } } public async Task GetProgress() { var url = $"{ApiBase}/metadata/progress.json"; using var httpClient = new HttpClient(); var response = await httpClient.GetAsync(url); var obj = await response.Content.ReadFromJsonAsync(); return obj; } public async Task> GetLibraries() { var url = $"{ApiBase}/metadata/file-set.json"; using var httpClient = new HttpClient(); var response = await httpClient.GetAsync(url); var json = await response.Content.ReadAsStringAsync(); var obj = JsonConvert.DeserializeObject>(json); return obj; } public async Task> GetMediaTags() { var url = $"{ApiBase}/metadata/tag-dict.json"; using var httpClient = new HttpClient(); var response = await httpClient.GetAsync(url); var json = await response.Content.ReadAsStringAsync(); var obj = JsonConvert.DeserializeObject>(json); return obj; } } }