public async Task <RecommendationsViewModel> GetRecommendationsAsync(IEnumerable <string> preferedMusic, int energyPercent) { (IEnumerable <string> artistsIds, IEnumerable <string> genresIds) = GetArtistsAndGenresIds(preferedMusic); RecommendationsResponse recommendationsResponse = await _spotifyService.GetRecommendationsAsync(artistsIds, genresIds, energyPercent); IEnumerable <RecommendationViewModel> recommendations = recommendationsResponse.Tracks .Select(CreateRecommendationViewModel); return(new RecommendationsViewModel(PageName, recommendations)); }
public NavigationResponse <TrackResponse> Convert(RecommendationsResponse source, NavigationResponse <TrackResponse> destination, ResolutionContext context) { if (source != null) { var itemMapping = context.Mapper.Map <List <TrackResponse> >(source.Tracks); itemMapping.ForEach(f => f.Seeds = context.Mapper.Map <List <RecommendationSeedResponse> >(source.Seeds)); var response = new NavigationResponse <TrackResponse> { Items = itemMapping, Total = itemMapping.Count }; return(response); } return(null); }
public async Task <RecommendationsResponse> GetRecommendations(long id) { var request = GetRequest(HttpMethod.Get, $"{AppSettings.WalmartApiBaseUrl}/{AppSettings.WalmartApiRecommendationsUrlPart}?apiKey={AppSettings.WalmartApiKey}&itemId={id}"); var response = await Client.SendAsync(request); var responseStr = await response.Content.ReadAsStringAsync(); try { if (responseStr.Contains("errors")) { var responseObj = JsonConvert.DeserializeObject <RecommendationsResponse>(responseStr); return(responseObj); } else { var recommendationsResponse = new RecommendationsResponse { Recommendations = JsonConvert.DeserializeObject <List <ItemResponse> >(responseStr) }; return(recommendationsResponse); } } catch (Exception e) { Logger.LogError(e, "Exception attempting to deserialize response for request URI {RequestUri}. Response: {responseStr}", request.RequestUri, responseStr); return(new RecommendationsResponse { StatusCode = (int)response.StatusCode, Errors = new List <WalmartOpenApiError> { new WalmartOpenApiError { Message = $"Response: {responseStr}. Exception {e.Message}" } } }); } }
public static NavigationResponse <TrackResponse> MapFromRecommendationResponse(this IMapper mapper, RecommendationsResponse recommendationsResponse) => mapper.Map <NavigationResponse <TrackResponse> >(recommendationsResponse);