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}"
                        }
                    }
                });
            }
        }
Exemplo n.º 4
0
 public static NavigationResponse <TrackResponse> MapFromRecommendationResponse(this IMapper mapper, RecommendationsResponse recommendationsResponse) =>
 mapper.Map <NavigationResponse <TrackResponse> >(recommendationsResponse);