public async Task <ObservableCollection <PlaylistModelDtoUI> > GetPlaylist(int idDeezer)
        {
            try
            {
                // request
                HttpClient          httpClient          = new HttpClient();
                HttpResponseMessage httpResponseMessage = await httpClient.GetAsync("https://api.deezer.com/user/" + idDeezer + "/playlists");

                string content = await httpResponseMessage.Content.ReadAsStringAsync();

                // deserialise
                PlaylistsModelDtoFromDeezer playlistsFromDeezer = Deserialize(content);

                // transform dtofromschrek to entity
                List <PlaylistEntity> playlistsEnity = new List <PlaylistEntity>();
                foreach (PlaylistModelDtoFromDeezer playlist in playlistsFromDeezer.playlists)
                {
                    PlaylistEntity playlistEntity = new PlaylistEntity();
                    playlistEntity.Title    = playlist.Title;
                    playlistEntity.Duration = playlist.Duration;
                    playlistsEnity.Add(playlistEntity);
                }

                // Save Entity
                ServiceLocator.GetService <Database>().Save(playlistsEnity);


                return(GetPlaylistFromCache());
            }
            catch (HttpRequestException)
            {
                throw new AccessDeezerException();
            }
        }
        public PlaylistEntity GetChannels()
        {
            var channels =
                new[]
            {
                new Channel(-1, "Первый канал", "http://localhost:3000", "Новости",
                            new ChannelAttributes(null, "https://webarmen.com/my/iptv/uploads/icon/2.png", null, null)),
                new Channel(-1, "Первый канал HD", "http://localhost:3001", "Новости",
                            new ChannelAttributes(null, "https://webarmen.com/my/iptv/uploads/icon/154.png", null, null)),
                new Channel(-1, "Россия 1 HD", "http://localhost:3003", "Новости",
                            new ChannelAttributes(null, "https://webarmen.com/my/iptv/uploads/icon/1.png", null, null)),
            };

            var playlist          = new PlaylistEntity(sampleChannelsId, channels, "sample playlist");
            var retrievedPlaylist = repository.FindById(sampleChannelsId);

            if (retrievedPlaylist != null)
            {
                repository.Update(playlist);
                return(playlist);
            }

            repository.Insert(playlist);

            return(playlist);
        }
예제 #3
0
        static void MigrateLocalMylistToPlaylistRepository(PlaylistRepository playlistRepository)
        {
            var groups = LocalMylistDb.GetLocalMylistGroups();

            if (groups.Count > 0)
            {
                System.Diagnostics.Debug.WriteLine("start migrating LocalMylist.");
                foreach (var legacyLocalPlaylist in groups)
                {
                    var newPlaylist = new PlaylistEntity()
                    {
                        Id             = LiteDB.ObjectId.NewObjectId().ToString(),
                        Label          = legacyLocalPlaylist.Label,
                        Count          = legacyLocalPlaylist.Items.Count,
                        PlaylistOrigin = Interfaces.PlaylistOrigin.Local
                    };

                    playlistRepository.Upsert(newPlaylist);
                    playlistRepository.AddItems(newPlaylist.Id, legacyLocalPlaylist.Items);

                    LocalMylistDb.Remove(legacyLocalPlaylist);

                    System.Diagnostics.Debug.WriteLine($"migrated: {newPlaylist.Label} ({newPlaylist.Count})");
                }
                System.Diagnostics.Debug.WriteLine("migrating LocalMylist done.");
            }
        }
예제 #4
0
        public void Delete()
        {
            var playlistName = "default";
            var playlist     = new PlaylistEntity(null, playlistName);

            repo.Delete(playlist.Id);
            repo.FindById(playlist.Id).Should().Be(null);
        }
예제 #5
0
        public void FindById()
        {
            var playlistName = "default";
            var playlist     = new PlaylistEntity(null, playlistName);

            repo.Insert(playlist);
            repo.FindById(playlist.Id).Should().NotBe(null);
        }
예제 #6
0
        /// <summary>
        /// Saves the last playlist.
        /// </summary>
        /// <param name="playlist">The playlist.</param>
        /// <returns>An async task.</returns>
        public Task ChangeLastPlaylistAsync(PlaylistEntity playlist)
        {
            if (!Equals(this.LastPlaylist, playlist))
            {
                this.LastPlaylist = playlist;
                return(this.lastPlaylistChangeHandler.SetLastPlaylistAsync(playlist));
            }

            return(Task.CompletedTask);
        }
예제 #7
0
        public IActionResult Create()
        {
            var playlistEntity = new PlaylistEntity
            {
                Name = "Новый плейлист",
            };

            repository.Insert(playlistEntity);
            return(Ok(playlistEntity));
        }
예제 #8
0
        private LocalPlaylist CreatePlaylist_Internal(string label)
        {
            var entity = new PlaylistEntity()
            {
                Id             = LiteDB.ObjectId.NewObjectId().ToString(),
                Label          = label,
                PlaylistOrigin = PlaylistItemsSourceOrigin.Local
            };

            _playlistRepository.UpsertPlaylist(entity);
            _playlistIdToEntity.Add(entity.Id, entity);

            var playlist = new LocalPlaylist(entity.Id, label, _playlistRepository, _nicoVideoProvider, WeakReferenceMessenger.Default);

            HandleItemsChanged(playlist);

            _playlists.Add(playlist);
            return(playlist);
        }
예제 #9
0
        public void Update()
        {
            var playlistName = "default";
            var playlist     = repo.Insert(new PlaylistEntity(null, playlistName));
            var channels     = new[]
            {
                new Channel(-1, "Первый канал", "http://localhost:3000"),
                new Channel(-1, "Второй канал", "http://localhost:3001"),
                new Channel(-1, "Четвертый канал", "http://localhost:3003"),
            };

            playlistName = "updated";
            var newPlaylist = new PlaylistEntity(playlist.Id, channels, playlistName);

            repo.Update(newPlaylist);
            var retrievedPlaylist = repo.FindById(playlist.Id);

            retrievedPlaylist.Channels.Should().HaveCount(3);
            retrievedPlaylist.Name.Should().Be(playlistName);
        }
예제 #10
0
        private LocalPlaylist CreatePlaylist_Internal(string label)
        {
            var entity = new PlaylistEntity()
            {
                Id             = LiteDB.ObjectId.NewObjectId().ToString(),
                Count          = 0,
                Label          = label,
                PlaylistOrigin = PlaylistOrigin.Local
            };

            _playlistRepository.Upsert(entity);
            _playlistIdToEntity.Add(entity.Id, entity);

            var playlist = new LocalPlaylist(entity.Id, _playlistRepository)
            {
                Label = label,
            };

            HandleItemsChanged(playlist);

            _playlists.Add(playlist);
            return(playlist);
        }
예제 #11
0
 /// <summary>
 /// Sets the last playlist.
 /// </summary>
 /// <param name="playlist">The playlist.</param>
 public void SetLastPlaylist(PlaylistEntity playlist)
 {
     this.playlist = playlist;
 }
예제 #12
0
 /// <summary>
 /// Sets the last playlist.
 /// </summary>
 /// <param name="playlistEntity">The playlist.</param>
 /// <returns>
 /// An async task.
 /// </returns>
 public async Task SetLastPlaylistAsync(PlaylistEntity playlistEntity)
 {
     this.lastPlaylistRepository.SetLastPlaylist(playlistEntity);
     await this.lastPlaylistRepository.SaveAsync().ConfigureAwait(false);
 }
 public void Update(PlaylistEntity playlist)
 {
     playlistCollection.ReplaceOne(p => playlist.Id == p.Id, playlist);
 }
 public PlaylistEntity Insert(PlaylistEntity playlist)
 {
     playlistCollection.InsertOne(playlist);
     return(playlist);
 }