private string GetDownloadPathname(string rootFolder, IPodcastInfo podcastInfo, IPodcastFeedItem podcastFeedItem) { var proposedFilename = podcastFeedItem.FileName; switch (podcastInfo.Feed.NamingStyle.Value) { case PodcastEpisodeNamingStyle.UrlFileNameAndPublishDateTime: proposedFilename = string.Format(CultureInfo.InvariantCulture, "{0}_{1}", podcastFeedItem.Published.ToString("yyyy_MM_dd_HHmm", CultureInfo.InvariantCulture), proposedFilename); break; case PodcastEpisodeNamingStyle.UrlFileNameFeedTitleAndPublishDateTime: proposedFilename = string.Format(CultureInfo.InvariantCulture, "{0}_{1}_{2}", podcastFeedItem.Published.ToString("yyyy_MM_dd_HHmm", CultureInfo.InvariantCulture), podcastInfo.Folder, proposedFilename); break; case PodcastEpisodeNamingStyle.UrlFileNameFeedTitleAndPublishDateTimeInfolder: proposedFilename = string.Format(CultureInfo.InvariantCulture, "{0}{1}{2}_{3}_{4}", podcastFeedItem.Published.ToString("yyyy_MM", CultureInfo.InvariantCulture), _pathUtilities.GetPathSeparator(), podcastFeedItem.Published.ToString("yyyy_MM_dd_HHmm", CultureInfo.InvariantCulture), podcastInfo.Folder, proposedFilename); break; case PodcastEpisodeNamingStyle.EpisodeTitle: proposedFilename = podcastFeedItem.TitleAsFileName; break; case PodcastEpisodeNamingStyle.EpisodeTitleAndPublishDateTime: proposedFilename = string.Format(CultureInfo.InvariantCulture, "{0}_{1}", podcastFeedItem.Published.ToString("yyyy_MM_dd_HHmm", CultureInfo.InvariantCulture), podcastFeedItem.TitleAsFileName); break; case PodcastEpisodeNamingStyle.UrlFileName: break; default: throw new EnumOutOfRangeException("NamingStyle"); } return(Path.Combine(Path.Combine(rootFolder, podcastInfo.Folder), proposedFilename)); }