using System.Net.Http.Headers;
using System.Text;
using System.Text.Json;
using Microsoft.Extensions.Options;
using SWAD.API.Consts.Enums;
using SWAD.API.Models.Config.ApiServices;
using SWAD.API.Models.JsonStructures.MusicAPI.Tidal;
namespace SWAD.API.Services.MusicAPI.Auth;
///
public class TidalAuthService : AbstractAuthService
{
public TidalAuthService(IOptions data)
{
ServiceType = MusicService.Tidal;
Data = data.Value.ServicesData.First(x => x.Name == ServiceType.ToString());
}
public override async Task GetToken()
{
using var httpClient = new HttpClient();
var base64Token = Convert.ToBase64String(Encoding.UTF8.GetBytes($"{Data.ClientId}:{Data.Secret}"));
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", base64Token);
var content = new Dictionary
{
{ "grant_type", "client_credentials" }
};
try
{
var response = await httpClient.PostAsync(Data.Endpoints.Token, new FormUrlEncodedContent(content));
if (response.IsSuccessStatusCode)
{
var ans = await JsonSerializer.DeserializeAsync(
await response.Content.ReadAsStreamAsync());
return ans;
}
}
catch (Exception)
{
return null;
}
return null;
}
}