using Sony.Filtr.AdminSearch.Models; using Sony.Filtr.ApolloAPI; using Sony.Filtr.DspWebAPI.DspModels; using System; using System.Collections.Generic; using System.Linq; using System.Net.Http; using System.Threading.Tasks; using System.Web; namespace Sony.Filtr.DspWebAPI { public class DspWebApi : ApolloWebApiBase, IDspWebApi { private enum VendorTypes { spotify } public DspWebApi(HttpClient httpClient) : base(httpClient) { } protected override string GetLoggerName() { return "DspWebApi"; } public async Task GetVideoByISrcAsync(string isrc) { var parameters = HttpUtility.ParseQueryString(String.Empty); parameters["dsp"] = "youtube"; parameters["expand_to"] = "related_isrcs"; parameters["sort_by"] = "views"; parameters["sort_order"] = "desc"; parameters["limit"] = "1"; parameters["isrc"] = isrc; string pathAndQuery = $"dsp-api/delphi/videos?{parameters}"; return (await this.GetDataFromDsp(pathAndQuery)).FirstOrDefault(); } public async Task> GetAmazonPlaylistsAsync(int limit, int offset) { var parameters = HttpUtility.ParseQueryString(String.Empty); parameters["limit"] = limit.ToString(); parameters["offset"] = offset.ToString(); parameters["dsp"] = "amazon"; parameters["sort_by"] = "dsp_playlist_id"; string pathAndQuery = $"dsp-api/delphi/playlists?{parameters}"; return (await this.GetDataFromDsp(pathAndQuery)).items.Select(x => new AmazonPlaylistIndexItem(x)).ToList(); } public async Task GetSpotifyPlaylistsSummaryAsync(string isrc, DateTime startDate, DateTime endDate, string market) { return await this.GetPlaylistsSummaryAsync(VendorTypes.spotify, isrc, startDate, endDate, market); } private async Task GetPlaylistsSummaryAsync(VendorTypes vendorType, string isrc, DateTime startDate, DateTime endDate, string market) { //https://qa-proxy.apollo.stream/dsp-api/consumer_analytics/v1/playlists-summary?isrc=USSM12105970&vendor=spotify&start_date=2022-07-02&end_date=2022-07-02&market=us var parameters = HttpUtility.ParseQueryString(String.Empty); parameters["isrc"] = isrc; parameters["vendor"] = vendorType.ToString(); parameters["start_date"] = startDate.ToString("yyyy-MM-dd"); parameters["end_date"] = endDate.ToString("yyyy-MM-dd"); parameters["market"] = market; string pathAndQuery = $"dsp-api/consumer_analytics/v1/playlists-summary?{parameters.ToString()}"; return await this.GetDataFromDsp(pathAndQuery); } private async Task GetDataFromDsp(string url) where T : class { return await this.GetFromApi(url, ParseResponse, NoCacheTime); } } }