コード例 #1
0
        public async Task <RequestResult> GetDataSpotify()
        {
            var result = new RequestResult(StatusResult.Success);

            try
            {
                var autorization = await GetAutorization();

                if (autorization != null)
                {
                    var    generosList = _generoService.GetAllGenero();
                    var    albumList   = new List <Album>();
                    Random numRandom   = new Random();

                    using (var client = _httpClientFactory.CreateClient("BlueDiscosOnlineClient"))
                    {
                        string baseURL = Configuration.GetSection("SpotifyConnection:BaseURL").Value;
                        client.BaseAddress = new Uri(baseURL);
                        var searchAlbumLimite = Configuration.GetSection("SpotifyConnection:SearchAlbumLimite").Value;
                        client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", autorization.Access_token);

                        foreach (var item in generosList)
                        {
                            var spotifyFilter = new SpotifyFilter();
                            var url           = client.BaseAddress + "recommendations?limit=" + searchAlbumLimite + "&seed_genres=" + item.Descricao;

                            var response = await client.GetAsync(url);

                            response.EnsureSuccessStatusCode();
                            if (response.IsSuccessStatusCode)
                            {
                                string content = await response.Content.ReadAsStringAsync();

                                if (content != null)
                                {
                                    spotifyFilter = JsonConvert.DeserializeObject <SpotifyFilter>(content);
                                }
                            }

                            foreach (var album in spotifyFilter.Tracks)
                            {
                                albumList.Add(new Album {
                                    Nome = album.Album.Name, Artista = album.Artists.FirstOrDefault().Name, GeneroId = item.Id, Valor = Convert.ToDecimal(numRandom.Next(1, 99) + Math.Round(numRandom.NextDouble(), 2))
                                });
                            }
                        }
                    }

                    if (albumList.Count() > 0)
                    {
                        using (var unitOfWork = _unitOfWorkFactory.CreateUnitOfWork())
                        {
                            foreach (var album in albumList)
                            {
                                unitOfWork.Repository.Add(album);
                            }

                            await unitOfWork.Commit();
                        }
                    }

                    result.Data = albumList;
                }
            }
            catch (Exception)
            {
                result.Status = StatusResult.Danger;
            }

            return(result);
        }