| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
-
- using GrpcShared.DTO;
- using GrpcShared.DTO.TopItem;
- using GrpcShared.DTO.Track;
- using GrpcShared.Interfaces;
- using Microsoft.Net.Http.Headers;
- using Newtonsoft.Json;
- using SpotifyService.HttpUtils;
-
- namespace SpotifyService.Services
- {
- public class StatsService : IStatsService
- {
- private readonly IHttpClientFactory _httpClientFactory;
- private IIdentityService _identityService;
- private IAuthService _authService;
- public StatsService(IHttpClientFactory httpClientFactory, IIdentityService identityService, IAuthService authService)
- {
- _httpClientFactory = httpClientFactory;
- _identityService = identityService;
- _authService = authService;
- }
-
-
- public async Task<CurrentTrackResponse> GetCurrentlyPlayingTrack(SessionMessage message)
- {
- string url = "me/player/currently-playing";
-
- var response = await HttpUtils<CurrentTrackResponse>
- .GetData(_httpClientFactory,
- url,
- message.UserId!,
- _identityService,
- _authService);
-
- string savedUrl = $"me/tracks/contains?ids={response.Item!.Id}";
-
- var savedResponse = await HttpUtils<List<bool>>
- .GetData(_httpClientFactory,
- savedUrl,
- message.UserId!,
- _identityService,
- _authService);
- if (response != null)
- {
- response.IsSaved = savedResponse[0];
- }
- return response;
-
- }
-
- public async Task<TopItemResponse> GetTopItems(TopItemRequest request)
- {
- //https://api.spotify.com/v1/me/top/albums?limit=10&offset=5
-
- //URL PARAMS
- string url = "me/top/";
- url += !request.IsTracks ? "artists" : "tracks";
- url += request.Limit == null ? "" : $"?limit={request.Limit}";
-
- if (request.Limit == null && request.Offset != null) url += $"?offset={request.Offset}";
- else url += request.Offset == null ? "" : $"&offset={request.Offset}";
-
- return await HttpUtils<TopItemResponse>
- .GetData(_httpClientFactory,
- url,
- request.UserId!,
- _identityService,
- _authService);
-
- }
- }
- }
|