ApiClient.cs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. using FNZCM.Shared.MediaModels;
  2. using FNZCM.Shared.MetadataModels;
  3. using Microsoft.AspNetCore.Components;
  4. using Newtonsoft.Json;
  5. using System.Net.Http.Json;
  6. namespace FNZCM.BlazorWasm.Helpers
  7. {
  8. public class ApiClient
  9. {
  10. public NavigationManager NavManager { get; set; }
  11. public ApiClient(NavigationManager nav) => NavManager = nav;
  12. public string ApiBase
  13. {
  14. get
  15. {
  16. #if DEBUG
  17. return $"http://fnz-server";
  18. #endif
  19. return $"{NavManager.ToAbsoluteUri("/").GetLeftPart(UriPartial.Scheme | UriPartial.Authority)}";
  20. }
  21. }
  22. public async Task<LoadingProgress?> GetProgress()
  23. {
  24. var url = $"{ApiBase}/metadata/progress.json";
  25. using var httpClient = new HttpClient();
  26. var response = await httpClient.GetAsync(url);
  27. var obj = await response.Content.ReadFromJsonAsync<LoadingProgress>();
  28. return obj;
  29. }
  30. public async Task<Dictionary<string, Library>> GetLibraries()
  31. {
  32. var url = $"{ApiBase}/metadata/file-set.json";
  33. using var httpClient = new HttpClient();
  34. var response = await httpClient.GetAsync(url);
  35. var json = await response.Content.ReadAsStringAsync();
  36. var obj = JsonConvert.DeserializeObject<Dictionary<string, Library>>(json);
  37. return obj;
  38. }
  39. public async Task<Dictionary<string, MediaTag>> GetMediaTags()
  40. {
  41. var url = $"{ApiBase}/metadata/tag-dict.json";
  42. using var httpClient = new HttpClient();
  43. var response = await httpClient.GetAsync(url);
  44. var json = await response.Content.ReadAsStringAsync();
  45. var obj = JsonConvert.DeserializeObject<Dictionary<string, MediaTag>>(json);
  46. return obj;
  47. }
  48. }
  49. }