using PlaylistShared.Shared; using PlaylistShared.Shared.SharedPlaylist; using PlaylistShared.Shared.Yandex; using System.Net.Http.Json; namespace PlaylistShared.Pwa.Services.Api; public class SharedPlaylistClient { private readonly HttpClient _http; public SharedPlaylistClient(HttpClient http) { _http = http; } /// /// GET /api/sharedplaylist/{token} /// public async Task> GetAsync(string token) { var response = await _http.GetFromJsonAsync>($"/api/sharedplaylist/{token}"); return response ?? ApiResponse.Fail(new ErrorResponse { Message = "Invalid response" }); } /// /// GET /api/sharedplaylist/{token}/tracks /// public async Task> GetTracksAsync(string token) { var response = await _http.GetFromJsonAsync>($"/api/sharedplaylist/{token}/tracks"); return response ?? ApiResponse.Fail(new ErrorResponse { Message = "Invalid response" }); } /// /// PUT /api/sharedplaylist/{token}/permissions /// public async Task> UpdatePermissionsAsync(string token, UpdatePermissionsDto permissions) { var response = await _http.PutAsJsonAsync($"/api/sharedplaylist/{token}/permissions", permissions); if (response.IsSuccessStatusCode) { var result = await response.Content.ReadFromJsonAsync>(); return result ?? ApiResponse.Fail(new ErrorResponse { Message = "Invalid response" }); } else { var error = await response.Content.ReadFromJsonAsync>(); return error ?? ApiResponse.Fail(new ErrorResponse { StatusCode = (int)response.StatusCode, Message = response.ReasonPhrase ?? "Unknown error" }); } } /// /// POST /api/sharedplaylist/{token}/add-tracks /// public async Task> AddTracksAsync(string token, List trackIds) { var request = new UpdateTrackListRequest { TrackIds = trackIds }; var response = await _http.PostAsJsonAsync($"/api/sharedplaylist/{token}/add-tracks", request); if (response.IsSuccessStatusCode) { var result = await response.Content.ReadFromJsonAsync>(); return result ?? ApiResponse.Fail(new ErrorResponse { Message = "Invalid response" }); } else { var error = await response.Content.ReadFromJsonAsync>(); return error ?? ApiResponse.Fail(new ErrorResponse { StatusCode = (int)response.StatusCode, Message = response.ReasonPhrase ?? "Unknown error" }); } } /// /// POST /api/sharedplaylist/{token}/remove-tracks /// public async Task> RemoveTracksAsync(string token, List trackIds) { var request = new UpdateTrackListRequest { TrackIds = trackIds }; var response = await _http.PostAsJsonAsync($"/api/sharedplaylist/{token}/remove-tracks", request); if (response.IsSuccessStatusCode) { var result = await response.Content.ReadFromJsonAsync>(); return result ?? ApiResponse.Fail(new ErrorResponse { Message = "Invalid response" }); } else { var error = await response.Content.ReadFromJsonAsync>(); return error ?? ApiResponse.Fail(new ErrorResponse { StatusCode = (int)response.StatusCode, Message = response.ReasonPhrase ?? "Unknown error" }); } } }