private void DownloadFile1() { ReadOnlyControlFile controlFile = new ReadOnlyControlFile(_inputfilename); IPodcastInfo info = GetPodcastInfo(controlFile, 0); DisplayMessage(string.Format("Reading a feed: {0}", info.Feed.Address)); IList <ISyncItem> allEpisodes = GetAllEpisodesInFeed(controlFile, info); if (allEpisodes.Count < 1) { DisplayMessage("No episodes in the feed - dont forget the state.xml file is being used", DisplayLevel.Warning); return; } IList <ISyncItem> firstEpisode = new List <ISyncItem>(1); firstEpisode.Add(allEpisodes.First()); DisplayMessage(string.Format("Downloading Eposode: {0}", firstEpisode.First().EpisodeTitle)); ISyncItemToEpisodeDownloaderTaskConverter converter = _iocContainer.Resolve <ISyncItemToEpisodeDownloaderTaskConverter>(); IEpisodeDownloader[] downloadTasks = converter.ConvertItemsToTasks(firstEpisode, StatusUpdate, ProgressUpdate); // run them in a task pool ITaskPool taskPool = _iocContainer.Resolve <ITaskPool>(); taskPool.RunAllTasks(1, downloadTasks); DisplayMessage(string.Format("Download Complete", allEpisodes.Count)); }
private IPodcastInfo GetPodcastInfo(ReadOnlyControlFile controlFile, int index) { IEnumerable <IPodcastInfo> podcasts = controlFile.GetPodcasts(); IPodcastInfo info = podcasts.ElementAt(index); return(info); }
static void Main(string[] args) { DisplayBanner(); if (args.Length < 1) { DisplayHelp(); return; } IIocContainer iocContainer = InitializeIocContainer(); ReadOnlyControlFile control = new ReadOnlyControlFile(args[0]); IFinder finder = iocContainer.Resolve <IFinder>(); ICopier copier = iocContainer.Resolve <ICopier>(); IUnwantedFileRemover remover = iocContainer.Resolve <IUnwantedFileRemover>(); IUnwantedFolderRemover folderRemover = iocContainer.Resolve <IUnwantedFolderRemover>(); IFileUtilities fileUtilities = iocContainer.Resolve <IFileUtilities>(); IPathUtilities pathUtilities = iocContainer.Resolve <IPathUtilities>(); IPlaylistFactory playlistFactory = iocContainer.Resolve <IPlaylistFactory>(); Generator generator = new Generator(finder, fileUtilities, pathUtilities, playlistFactory); generator.StatusUpdate += new EventHandler <StatusUpdateEventArgs>(StatusUpdate); Synchronizer synchronizer = new Synchronizer(finder, copier, remover, folderRemover); synchronizer.StatusUpdate += new EventHandler <StatusUpdateEventArgs>(StatusUpdate); synchronizer.Synchronize(control, false); if (!string.IsNullOrEmpty(control.GetPlaylistFileName())) { generator.GeneratePlaylist(control, true); } }
static void Main(string[] args) { DisplayBanner(); if (args.Length < 1) { DisplayHelp(); return; } IIocContainer iocContainer = InitializeIocContainer(); var control = new ReadOnlyControlFile(args[0]); var finder = iocContainer.Resolve <IFinder>(); var fileUtilities = iocContainer.Resolve <IFileUtilities>(); var pathUtilities = iocContainer.Resolve <IPathUtilities>(); var playlistFactory = iocContainer.Resolve <IPlaylistFactory>(); var generator = new Generator(finder, fileUtilities, pathUtilities, playlistFactory); generator.StatusUpdate += new EventHandler <StatusUpdateEventArgs>(GeneratorStatusUpdate); if (!string.IsNullOrEmpty(control.GetPlaylistFileName())) { generator.GeneratePlaylist(control, false); } }
static void Main(string[] args) { DisplayBanner(); if (args.Length < 1) { DisplayHelp(); return; } Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("Started - {0}", DateTime.Now.ToString()); Console.ResetColor(); _iocContainer = InitializeIocContainer(); _control = new ReadOnlyControlFile(args[0]); _verbose = _control.GetDiagnosticOutput() == DiagnosticOutputLevel.Verbose; _driveInfoProvider = _iocContainer.Resolve <IDriveInfoProvider>(); int numberOfConnections = _control.GetMaximumNumberOfConcurrentDownloads(); System.Net.ServicePointManager.DefaultConnectionLimit = numberOfConnections; ResetCounters(); // find the episodes to download var allEpisodes = new List <ISyncItem>(20); var podcastEpisodeFinder = _iocContainer.Resolve <IEpisodeFinder>(); podcastEpisodeFinder.StatusUpdate += StatusUpdate; foreach (var podcastInfo in _control.GetPodcasts()) { var episodesInThisFeed = podcastEpisodeFinder.FindEpisodesToDownload(_control.GetSourceRoot(), _control.GetRetryWaitInSeconds(), podcastInfo, _control.GetDiagnosticRetainTemporaryFiles()); allEpisodes.AddRange(episodesInThisFeed); } _number_of_files_to_download = allEpisodes.Count; _number_of_files_downloaded = 0; if (_number_of_files_to_download > 0) { Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("Downloading {0} episodes", _number_of_files_to_download); Console.ResetColor(); // convert them to tasks var converter = _iocContainer.Resolve <ISyncItemToEpisodeDownloaderTaskConverter>(); IEpisodeDownloader[] downloadTasks = converter.ConvertItemsToTasks(allEpisodes, StatusUpdate, ProgressUpdate); // run them in a task pool _taskPool = _iocContainer.Resolve <ITaskPool>(); Console.CancelKeyPress += new ConsoleCancelEventHandler(Console_CancelKeyPress); _taskPool.RunAllTasks(numberOfConnections, downloadTasks); } Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("Done - {0}", DateTime.Now.ToString()); Console.ResetColor(); }
protected override void GivenThat() { base.GivenThat(); XmlNode n = ControlFileXmlDocument.SelectSingleNode("podcasts/global/freeSpaceToLeaveOnDestinationMB"); n.InnerText = ControlFileFreeSpaceText; ControlFile = new ReadOnlyControlFile(ControlFileXmlDocument); }
protected override void When() { ThrownException = null; try { ControlFile = new ReadOnlyControlFile(ControlFileXmlDocument); } catch (Exception exception) { ThrownException = exception; } }
private void ReadControlFile() { DisplayMessage(string.Format("Reading a control file: {0}", _inputfilename)); ReadOnlyControlFile controlFile = new ReadOnlyControlFile(_inputfilename); IEnumerable <PodcastInfo> podcasts = controlFile.GetPodcasts(); PodcastInfo[] podcastArray = podcasts.ToArray(); DisplayMessage(string.Format("Number of podcasts in test file: {0}", podcastArray.Length)); foreach (IPodcastInfo info in podcasts) { DisplayMessage(string.Format("Podcast: {0} {1}", info.Folder, info.Feed.Address)); } }
private IList <ISyncItem> GetAllEpisodesInFeed(ReadOnlyControlFile controlFile, IPodcastInfo info) { List <ISyncItem> allEpisodes = new List <ISyncItem>(20); IEpisodeFinder podcastEpisodeFinder = _iocContainer.Resolve <IEpisodeFinder>(); IList <ISyncItem> episodesInThisFeed = podcastEpisodeFinder.FindEpisodesToDownload( controlFile.GetSourceRoot(), controlFile.GetRetryWaitInSeconds(), info, controlFile.GetDiagnosticRetainTemporaryFiles() ); allEpisodes.AddRange(episodesInThisFeed); return(allEpisodes); }
private void ReadFeed1() { ReadOnlyControlFile controlFile = new ReadOnlyControlFile(_inputfilename); IPodcastInfo info = GetPodcastInfo(controlFile, 0); DisplayMessage(string.Format("Reading a feed: {0}", info.Feed.Address)); IList <ISyncItem> allEpisodes = GetAllEpisodesInFeed(controlFile, info); DisplayMessage(string.Format("Eposodes in feed: {0}", allEpisodes.Count)); foreach (ISyncItem item in allEpisodes) { DisplayMessage(string.Format("Eposode: {0}", item.EpisodeTitle)); } }
protected override void GivenThat() { base.GivenThat(); _testControlFileResourcePath = "PodcastUtilities.Common.Tests.XML.testcontrolfile.xml"; Stream s = Assembly.GetExecutingAssembly().GetManifestResourceStream(_testControlFileResourcePath); XmlReaderSettings readSettings = new XmlReaderSettings { ConformanceLevel = ConformanceLevel.Document }; _xmlReader = XmlReader.Create(s, readSettings); _controlFile = new ReadOnlyControlFile(); }
protected override void When() { ThrownException = null; try { ControlFile = new ReadOnlyControlFile(ControlFileXmlDocument); // this will be the defaulted value from the global section MaxDaysOld1 = ControlFile.GetPodcasts().ElementAt(1).Feed.MaximumDaysOld.Value; // this is set explicitly by the feed MaxDaysOld2 = ControlFile.GetPodcasts().ElementAt(2).Feed.MaximumDaysOld.Value; } catch (Exception exception) { ThrownException = exception; } }
private ReadOnlyControlFile OpenControlFile(Android.Net.Uri uri) { try { ContentResolver resolver = Application.ContentResolver; var stream = resolver.OpenInputStream(uri); var xml = new XmlDocument(); xml.Load(stream); var control = new ReadOnlyControlFile(xml); var podcasts = control.GetPodcasts(); int count = 0; foreach (var item in podcasts) { count++; } NoOfFeeds = count; AndroidApplication.Logger.Debug(() => $"MainActivity:Control Podcasts {control.GetSourceRoot()}"); AndroidApplication.Logger.Debug(() => $"MainActivity:Control Podcasts {count}"); SetTextViewText(Resource.Id.txtConfigFilePath, $"{uri.ToString()}"); freeBytesNet = GetFreeBytes(control.GetSourceRoot()); freeBytesAndroid = FileSystemHelper.GetAvailableFileSystemSizeInBytes(control.GetSourceRoot()); totalBytesAndroid = FileSystemHelper.GetTotalFileSystemSizeInBytes(control.GetSourceRoot()); var output = $"{count}, {control.GetSourceRoot()}\nFree space (Net): {DisplayFormatter.RenderFileSize(freeBytesNet)}\nFree/total space (Android): {DisplayFormatter.RenderFileSize(freeBytesAndroid)}/{DisplayFormatter.RenderFileSize(totalBytesAndroid)}"; SetTextViewText(Resource.Id.txtOutput, output); return(control); } catch (Exception ex) { AndroidApplication.Logger.LogException(() => $"MainActivity: OpenConfigFile", ex); SetTextViewText(Resource.Id.txtConfigFilePath, $"Error {ex.Message}"); return(null); } }
protected override void When() { ControlFile = new ReadOnlyControlFile(ControlFileXmlDocument); Separator = ControlFile.GetPlaylistPathSeparator(); }
static void Main(string[] args) { DisplayBanner(); if (args.Length < 1) { DisplayHelp(); return; } _iocContainer = InitializeIocContainer(); _control = new ReadOnlyControlFile(args[0]); if (args.Count() > 1) { _quiet = args[1].Contains('q'); } // find the episodes to delete List <IFileInfo> allFilesToDelete = new List <IFileInfo>(20); IEpisodePurger podcastEpisodePurger = _iocContainer.Resolve <IEpisodePurger>(); foreach (PodcastInfo podcastInfo in _control.GetPodcasts()) { IList <IFileInfo> filesToDeleteFromThisFeed = podcastEpisodePurger.FindEpisodesToPurge(_control.GetSourceRoot(), podcastInfo); allFilesToDelete.AddRange(filesToDeleteFromThisFeed); } // find folders that can now be deleted List <IDirectoryInfo> allFoldersToDelete = new List <IDirectoryInfo>(10); foreach (PodcastInfo podcastInfo in _control.GetPodcasts()) { IList <IDirectoryInfo> foldersToDeleteInThisFeed = podcastEpisodePurger.FindEmptyFoldersToDelete(_control.GetSourceRoot(), podcastInfo, allFilesToDelete); allFoldersToDelete.AddRange(foldersToDeleteInThisFeed); } if (allFilesToDelete.Count == 0 && allFoldersToDelete.Count == 0) { Console.WriteLine("There is nothing to delete"); return; } if (_quiet) { DoDelete(allFilesToDelete, allFoldersToDelete); } else { if (allFilesToDelete.Count > 0) { Console.WriteLine("Files:"); foreach (IFileInfo fileInfo in allFilesToDelete) { Console.WriteLine("{0}", fileInfo.FullName); } } if (allFoldersToDelete.Count > 0) { Console.WriteLine("Folders:"); foreach (IDirectoryInfo folder in allFoldersToDelete) { Console.WriteLine("{0}", folder.FullName); } } Console.WriteLine("OK to delete {0} files and {1} folders? (y/n) ", allFilesToDelete.Count, allFoldersToDelete.Count); string answer; do { char key = Convert.ToChar(Console.Read()); answer = key.ToString().ToLower(); } while (answer != "y" && answer != "n"); if (answer == "y") { Console.WriteLine("Deleting {0} files and {1} folders", allFilesToDelete.Count, allFoldersToDelete.Count); DoDelete(allFilesToDelete, allFoldersToDelete); } else { Console.WriteLine("No files deleted"); } } Console.WriteLine("Done"); }
public void Initialise(ReadOnlyControlFile controlFile) { Logger.Debug(() => $"DownloadViewModel:Initialise"); ControlFile = controlFile; Observables.Title?.Invoke(this, ResourceProvider.GetString(Resource.String.download_activity_title)); }
protected override void When() { ControlFile = new ReadOnlyControlFile(ControlFileXmlDocument); }