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