| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- using Grpc.Core;
- using GrpcShared;
- using GrpcShared.DTO.Search;
- using GrpcShared.DTO.Track.SingleTrack;
- using GrpcShared.Interfaces;
- using Microsoft.Net.Http.Headers;
- using Newtonsoft.Json;
- using System.Text;
- using System.Text.Json;
-
- namespace SpotifyService.Services
- {
- public class TrackService : ITrackService
- {
- private readonly IHttpClientFactory _httpClientFactory;
-
-
- public TrackService(IHttpClientFactory httpClientFactory)
- {
- _httpClientFactory = httpClientFactory;
- }
-
- public async Task<SearchResponse> ListSearchAsync(SearchRequest request)
- {
- var client = _httpClientFactory.CreateClient("HttpClient");
-
- client.DefaultRequestHeaders.Add(HeaderNames.Authorization, "Bearer " + request.Token );
-
- var searchResult = await client.GetAsync($"search?q={request.Query}&type={request.Type}");
-
- var responses = JsonConvert.DeserializeObject<SearchResponse>(await searchResult.Content.ReadAsStringAsync())!;
-
- return new SearchResponse
- {
- Tracks = responses!.Tracks
- };
-
-
- }
-
- public async Task<SingleTrackResponse> ListSingleTrackAsync(SingleTrackRequest request)
- {
- var client = _httpClientFactory.CreateClient("HttpClient");
-
- client.DefaultRequestHeaders.Add(HeaderNames.Authorization, "Bearer " + request.Token);
-
- var trackResult = await client.GetAsync($"audio-features/{request.Id}");
-
- var responses = JsonConvert.DeserializeObject<SingleTrackResponse>(await trackResult.Content.ReadAsStringAsync())!;
-
- return new SingleTrackResponse
- {
- Id = responses!.Id,
- Danceability = responses!.Danceability,
- Key = responses!.Key,
- Loudness = responses!.Loudness,
- Mode = responses!.Mode,
- Speechiness = responses!.Speechiness,
- Acousticness = responses!.Acousticness,
- Instrumentalness = responses!.Instrumentalness,
- Liveness = responses!.Liveness,
- Valence = responses!.Valence,
- Tempo = responses!.Tempo,
- Type = responses!.Type,
- Uri = responses!.Uri,
- TrackHref = responses!.TrackHref,
- AnalysisUrl = responses!.AnalysisUrl,
- DurationMs = responses!.DurationMs,
- TimeSignature = responses!.TimeSignature,
- };
- }
- }
- }
|