Esempio n. 1
0
        /// <summary>
        /// Gets as index item.
        /// </summary>
        /// <param name="episode">The episode.</param>
        /// <returns>The episode index item view model.</returns>
        public static EpisodeIndexItemViewModel AsIndexItem(
            this DBEpisode episode)
        {
            bool downloadCompleted =
                EpisodeMediaInfo.IsDownloadCompleted(
                    episode.FileSizeInBytes,
                    episode.DownloadedBytes);

            return(new EpisodeIndexItemViewModel(
                       episode.Date,
                       episode.EpisodeId,
                       episode.Title,
                       episode.PendingDownload,
                       downloadCompleted));
        }
Esempio n. 2
0
        /// <summary>
        /// Downloads the episode.
        /// </summary>
        /// <param name="episode">The episode.</param>
        /// <exception cref="Uncas.PodCastPlayer.Utility.UtilityException"></exception>
        /// <exception cref="Uncas.PodCastPlayer.Repository.RepositoryException"></exception>
        /// <exception cref="Uncas.PodCastPlayer.AppServices.ServiceException"></exception>
        private void DownloadEpisode(
            Episode episode)
        {
            Debug.Assert(
                episode != null,
                "A non-null episode is required internally.");
            var fileName           = episode.FileName;
            var relativeFolderPath =
                Path.Combine(
                    "PodCasts",
                    episode.PodCast.Name);
            var absoluteFolderPath =
                Path.Combine(
                    Environment.GetFolderPath(
                        Environment.SpecialFolder.MyMusic),
                    relativeFolderPath);
            var filePath =
                Path.Combine(
                    absoluteFolderPath,
                    fileName);

            // Gets stream:
            var podCastStream =
                this.Downloader.GetEpisodeStream(
                    episode.MediaUrl);

            // Saves stream:
            var downloadedBytes =
                this.saver.SaveStream(
                    filePath,
                    podCastStream.Length,
                    podCastStream.Stream);

            // Returns info about how it all went:
            var mediaInfo =
                new EpisodeMediaInfo
            {
                FileSizeInBytes = podCastStream.Length,
                DownloadedBytes = downloadedBytes
            };

            episode.MediaInfo       = mediaInfo;
            episode.PendingDownload =
                !mediaInfo.DownloadCompleted;

            this.EpisodeRepository.UpdateEpisode(episode);
        }
Esempio n. 3
0
        /// <summary>
        /// Downloads the episode.
        /// </summary>
        /// <param name="episode">The episode.</param>
        /// <exception cref="Uncas.PodCastPlayer.Utility.UtilityException"></exception>
        /// <exception cref="Uncas.PodCastPlayer.Repository.RepositoryException"></exception>
        /// <exception cref="Uncas.PodCastPlayer.AppServices.ServiceException"></exception>
        private void DownloadEpisode(
            Episode episode)
        {
            Debug.Assert(
                episode != null,
                "A non-null episode is required internally.");
            var fileName = episode.FileName;
            var relativeFolderPath =
                Path.Combine(
                "PodCasts",
                episode.PodCast.Name);
            var absoluteFolderPath =
                Path.Combine(
                    Environment.GetFolderPath(
                        Environment.SpecialFolder.MyMusic),
                    relativeFolderPath);
            var filePath =
                Path.Combine(
                    absoluteFolderPath,
                    fileName);

            // Gets stream:
            var podCastStream =
                this.Downloader.GetEpisodeStream(
                episode.MediaUrl);

            // Saves stream:
            var downloadedBytes =
                this.saver.SaveStream(
                filePath,
                podCastStream.Length,
                podCastStream.Stream);

            // Returns info about how it all went:
            var mediaInfo =
                new EpisodeMediaInfo
                {
                    FileSizeInBytes = podCastStream.Length,
                    DownloadedBytes = downloadedBytes
                };

            episode.MediaInfo = mediaInfo;
            episode.PendingDownload =
                !mediaInfo.DownloadCompleted;

            this.EpisodeRepository.UpdateEpisode(episode);
        }