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; } }