private void ExecuteSearchForAlbum(string artist, string album)
        {
            Task.Factory.StartNew(state => GetAlbumMatchingName(state), Tuple.Create(artist, album))
            .ContinueWith(task =>
            {
                var data = (Tuple <string, string>)task.AsyncState;

                if (task.Exception != null)
                {
                    ToastService.Show("Error occurred during fetching of album");
                    Logger.Log(task.Exception.ToString(), Category.Exception, Priority.Medium);
                }
                else
                {
                    CurrentTrackContainer = task.Result;

                    if (task.Result == null)
                    {
                        ToastService.Show("Unable to find album " + data.Item2 + " by " + data.Item1);
                    }
                    else
                    {
                        Task childTask = new Task(state =>
                        {
                            var albumInfo = (Tuple <string, string>)task.AsyncState;
                            LookUpAlbumInformation(albumInfo.Item1, albumInfo.Item2);
                        }, data, TaskCreationOptions.AttachedToParent);
                        childTask.Start();
                    }
                }
            });
        }
Пример #2
0
        private void ExecuteGoToAlbum(TrackContainer album)
        {
            UriQuery q = new UriQuery();

            q.Add("artistName", album.Owner.Name);
            q.Add("albumName", album.Name);
            RegionManager.RequestNavigate(AppRegions.ViewRegion, typeof(AlbumView).FullName + q);
        }
        public IEnumerable <TrackContainer> GetAlbumsByArtist(string artist)
        {
            List <TrackContainer> containers = new List <TrackContainer>();

            if (!IsLoggedIn())
            {
                return(containers);
            }

            QueryServiceClient query = new QueryServiceClient();

            try
            {
                var queryResult = query.Query(artist, 0, 0, 0, 0, 0, 10);
                var result      =
                    queryResult.Artists.FirstOrDefault(
                        a => a.Name.Equals(artist, StringComparison.InvariantCultureIgnoreCase));

                if (result == null && queryResult.Artists.Any())
                {
                    result = queryResult.Artists.FirstOrDefault();
                }

                if (result != null)
                {
                    var browse      = query.ArtistBrowse(result.ID, ArtistBrowsingType.Full);
                    var albumGroups = browse.Tracks.Where(t => t.IsAvailable).GroupBy(t => t.Album.ID);

                    foreach (var albumGroup in albumGroups)
                    {
                        TrackContainer container = new TrackContainer();
                        container.Owner  = new TrackContainerOwner(artist);
                        container.Tracks = albumGroup.Select(SpotifyRadioTrackPlayer.ConvertTrack).ToArray();

                        var firstOrDefault = container.Tracks.FirstOrDefault();
                        if (firstOrDefault != null)
                        {
                            container.Name  = firstOrDefault.Album;
                            container.Image = container.Image = firstOrDefault.AlbumArt;
                        }

                        containers.Add(container);
                    }
                }

                query.Close();
            }
            catch (Exception e)
            {
                _logger.Log(e.Message, Category.Exception, Priority.Medium);
                query.Abort();
            }

            return(containers);
        }
Пример #4
0
        public async Task UploadCollectionAsync_WhenBlobNameIsEmpty_ShouldThrow()
        {
            // --- Arrange
            TrackContainer trackContainer = GetMock.TrackContainer();
            var            resultJson     = Serializer.WriteFromObject(typeof(TrackContainer), trackContainer);

            var sut = new BlobStorageRepository(_blobConnectionString);

            // --- Act
            string blobName = "";
            await sut.UploadCollectionAsync(resultJson, blobName);
        }
Пример #5
0
        public void GetBlobs_WhenBlobStorageHasItemsAndPrefixIsFound_ShouldReturnItems()
        {
            var            sut            = new BlobStorageRepository(_blobConnectionString);
            TrackContainer trackContainer = GetMock.TrackContainer();
            var            resultJson     = Serializer.WriteFromObject(typeof(TrackContainer), trackContainer);
            var            blobItem       = sut.UploadCollection(resultJson, trackContainer.Id);

            // --- Act
            var blobItems = sut.GetBlobs(blobItem.BlobId);

            // --- Assert
            Assert.IsNotNull(blobItems);
            Assert.IsTrue(blobItems.ToArray().Length > 0);
        }
Пример #6
0
        public async Task UploadCollectionAsync_WhenCollectionValidUploadToAzure_ShouldUpload()
        {
            // --- Arrange
            TrackContainer trackContainer = GetMock.TrackContainer();
            var            resultJson     = Serializer.WriteFromObject(typeof(TrackContainer), trackContainer);

            var sut = new BlobStorageRepository(_blobConnectionString);

            // --- Act
            var blobName = trackContainer.Id;
            var blobItem = await sut.UploadCollectionAsync(resultJson, blobName);

            // --- Assert
            Assert.IsNotNull(blobItem);
            Assert.AreEqual(blobName, blobItem.BlobId);
            Assert.IsTrue(blobItem.BlobUri.AbsoluteUri.LastIndexOf(blobName) > 0);
        }
Пример #7
0
        public void SerializeAndDeserializeObject_WhenObjectHasDataContractAttributes_ShouldGetTheObjectBack()
        {
            TrackContainer trackContainer = GetMock.TrackContainer();
            var            resultJson     = Serializer.WriteFromObject(typeof(TrackContainer), trackContainer);

            Assert.IsNotNull(resultJson);

            var deserializedTrackContainer = Serializer.ReadToTrackObject <TrackContainer>(resultJson);

            Assert.IsNotNull(deserializedTrackContainer);
            Assert.AreEqual(trackContainer.Id, deserializedTrackContainer.Id);
            Assert.AreEqual(trackContainer.LeftCornerPosition.X, deserializedTrackContainer.LeftCornerPosition.X);
            Assert.AreEqual(trackContainer.LeftCornerPosition.Y, deserializedTrackContainer.LeftCornerPosition.Y);
            Assert.AreEqual(trackContainer.LeftCornerPosition.Z, deserializedTrackContainer.LeftCornerPosition.Z);
            Assert.AreEqual(trackContainer.Tracks.ElementAt(0).Id, deserializedTrackContainer.Tracks.ElementAt(0).Id);
            Assert.AreEqual(trackContainer.Tracks.ElementAt(1).Id, deserializedTrackContainer.Tracks.ElementAt(1).Id);
        }
Пример #8
0
        public IEnumerable <TrackContainer> GetAlbumsByArtist(string artist)
        {
            List <TrackContainer> containers = new List <TrackContainer>();

            try
            {
                var response = GroovesharkModule.GetClient().SearchArtist(artist);
                var results  = response.result.result as List <SearchArtist.SearchArtistResult>;
                var byAlbum  = results
                               .Where(s => artist.Equals(s.ArtistName, StringComparison.InvariantCultureIgnoreCase))
                               .GroupBy(s => new { Album = s.AlbumName, Year = s.Year });

                foreach (var albumGroup in byAlbum)
                {
                    int year;
                    if (!int.TryParse(albumGroup.Key.Year, out year))
                    {
                        year = DateTime.Now.Year;
                    }

                    TrackContainer container = new TrackContainer
                    {
                        Name   = albumGroup.Key.Album,
                        Year   = year,
                        Owner  = new TrackContainerOwner(artist),
                        Tracks = Convert(albumGroup).OrderBy(t => t.Index).ToArray(),
                    };

                    var firstTrack = container.Tracks.FirstOrDefault();

                    if (firstTrack != null)
                    {
                        container.Image = firstTrack.AlbumArt;
                    }

                    containers.Add(container);
                }
            }
            catch (Exception e)
            {
                _logger.Log("Grooveshark: " + e, Category.Exception, Priority.Medium);
            }

            return(containers);
        }
Пример #9
0
        public void DownloadBlob_WhenValidCollectionUploadedAzure_ShouldDownloadToCollectionObject()
        {
            // --- Arrange
            TrackContainer trackContainer = GetMock.TrackContainer();
            var            containerJson  = Serializer.WriteFromObject(typeof(TrackContainer), trackContainer);

            var sut = new BlobStorageRepository(_blobConnectionString);

            // --- Act
            var blobName = trackContainer.Id;

            sut.UploadCollection(containerJson, blobName);
            var objectString = sut.DownloadBlob(blobName);
            var container    = Serializer.ReadToTrackObject <TrackContainer>(objectString);

            // --- Assert
            Assert.IsNotNull(container);
        }
Пример #10
0
        private void ExecuteAddTrackContainerToFavorites(object parameter)
        {
            IEnumerable <TrackContainer> containers;
            TrackContainer container = parameter as TrackContainer;

            if (container != null)
            {
                containers = new[] { container };
            }
            else
            {
                containers = parameter as IEnumerable <TrackContainer>;
            }

            if (containers != null && containers.Any())
            {
                try
                {
                    using (var session = DocumentStore.OpenSession())
                    {
                        foreach (var trackContainer in containers)
                        {
                            TrackContainerFavorite fav = new TrackContainerFavorite();
                            fav.TrackContainer = trackContainer;
                            fav.Index          = session.Query <Favorite>().Count();
                            session.Store(fav);
                        }

                        session.SaveChanges();
                    }

                    ToastService.Show(new ToastData
                    {
                        Icon    = AppIcons.Save,
                        Message = "Favorite added"
                    });
                }
                catch (Exception e)
                {
                    ToastService.Show("Unable to save favorite. " + e.Message);
                    Logger.Log("Error while saving favorite. " + e, Category.Exception, Priority.High);
                }
            }
        }
        public IEnumerable<TrackContainer> GetAlbumsByArtist(string artist)
        {
            List<TrackContainer> containers = new List<TrackContainer>();

            try
            {
                var response = GroovesharkModule.GetClient().SearchArtist(artist);
                var results = response.result.result as List<SearchArtist.SearchArtistResult>;
                var byAlbum = results
                    .Where(s => artist.Equals(s.ArtistName, StringComparison.InvariantCultureIgnoreCase))
                    .GroupBy(s => new { Album = s.AlbumName, Year = s.Year });

                foreach (var albumGroup in byAlbum)
                {
                    int year;
                    if (!int.TryParse(albumGroup.Key.Year, out year))
                    {
                        year = DateTime.Now.Year;
                    }

                    TrackContainer container = new TrackContainer
                                               {
                                                   Name = albumGroup.Key.Album,
                                                   Year = year,
                                                   Owner = new TrackContainerOwner(artist),
                                                   Tracks = Convert(albumGroup).OrderBy(t => t.Index).ToArray(),
                                               };

                    var firstTrack = container.Tracks.FirstOrDefault();

                    if (firstTrack != null)
                    {
                        container.Image = firstTrack.AlbumArt;
                    }

                    containers.Add(container);
                }
            }
            catch (Exception e)
            {
                _logger.Log("Grooveshark: " + e, Category.Exception, Priority.Medium);
            }

            return containers;
        }
 void INavigationAware.OnNavigatedFrom(NavigationContext navigationContext)
 {
     CurrentTrackContainer = null;
 }
        public IEnumerable<TrackContainer> GetAlbumsByArtist(string artist)
        {
            List<TrackContainer> containers = new List<TrackContainer>();

            if (!IsLoggedIn())
            {
                return containers;
            }

            QueryServiceClient query = new QueryServiceClient();

            try
            {
                var queryResult = query.Query(artist, 0, 0, 0, 0, 0, 10);
                var result =
                    queryResult.Artists.FirstOrDefault(
                        a => a.Name.Equals(artist, StringComparison.InvariantCultureIgnoreCase));

                if (result == null && queryResult.Artists.Any())
                {
                    result = queryResult.Artists.FirstOrDefault();
                }

                if (result != null)
                {
                    var browse = query.ArtistBrowse(result.ID, ArtistBrowsingType.Full);
                    var albumGroups = browse.Tracks.Where(t => t.IsAvailable).GroupBy(t => t.Album.ID);

                    foreach (var albumGroup in albumGroups)
                    {
                        TrackContainer container = new TrackContainer();
                        container.Owner = new TrackContainerOwner(artist);
                        container.Tracks = albumGroup.Select(SpotifyRadioTrackPlayer.ConvertTrack).ToArray();

                        var firstOrDefault = container.Tracks.FirstOrDefault();
                        if (firstOrDefault != null)
                        {
                            container.Name = firstOrDefault.Album;
                            container.Image = container.Image = firstOrDefault.AlbumArt;
                        }

                        containers.Add(container);
                    }
                }

                query.Close();
            }
            catch (Exception e)
            {
                _logger.Log(e.Message, Category.Exception, Priority.Medium);
                query.Abort();
            }

            return containers;
        }
 private void ExecuteGoToAlbum(TrackContainer album)
 {
     UriQuery q = new UriQuery();
     q.Add("artistName", album.Owner.Name);
     q.Add("albumName", album.Name);
     RegionManager.RequestNavigate(AppRegions.ViewRegion, typeof(AlbumView).FullName + q);
 }