ApiClient.cs 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  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
  7. {
  8. internal static class ApiClient
  9. {
  10. public static NavigationManager HellNm { get; set; }
  11. #if DEBUG
  12. private static string ub = $"http://fnz-server";
  13. #else
  14. private static string ub => $"{HellNm.ToAbsoluteUri("/").GetLeftPart(UriPartial.Scheme | UriPartial.Authority)}";
  15. #endif
  16. public static string ImageUrl(string lib,string disc)
  17. {
  18. return $"{ub}/cover/{lib}/{disc}/cover.jpg";
  19. }
  20. public static string GetListPageUrl(string lib, string disc, string subset = null)
  21. {
  22. return subset == null
  23. ? $"{ub}/list/{lib}/{disc}/playlist.m3u8.html"
  24. : $"{ub}/list/{lib}/{disc}/{subset}/playlist.m3u8.html";
  25. }
  26. public static string GetMediaUrl(string lib, string disc, string track, string subset = null)
  27. {
  28. return subset == null
  29. ? $"{ub}/media/{lib}/{disc}/{track}"
  30. : $"{ub}/media/{lib}/{disc}/{subset}/{track}";
  31. }
  32. public static async Task<LoadingProgress?> GetProgress()
  33. {
  34. var url = $"{ub}/metadata/progress.json";
  35. using var httpClient = new HttpClient();
  36. var response = await httpClient.GetAsync(url);
  37. var obj = await response.Content.ReadFromJsonAsync<LoadingProgress>();
  38. return obj;
  39. }
  40. public static async Task<Dictionary<string, Library>?> GetLibraries()
  41. {
  42. var url = $"{ub}/metadata/file-set.json";
  43. using var httpClient = new HttpClient();
  44. var response = await httpClient.GetAsync(url);
  45. var json = await response.Content.ReadAsStringAsync();
  46. var obj = JsonConvert.DeserializeObject<Dictionary<string, Library>>(json);
  47. return obj;
  48. }
  49. public static async Task<Dictionary<string, MediaTag>> GetMediaTags()
  50. {
  51. var url = $"{ub}/metadata/tag-dict.json";
  52. using var httpClient = new HttpClient();
  53. var response = await httpClient.GetAsync(url);
  54. var json = await response.Content.ReadAsStringAsync();
  55. var obj = JsonConvert.DeserializeObject<Dictionary<string, MediaTag>>(json);
  56. return obj;
  57. }
  58. }
  59. }