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