/// <summary> /// Application invoker /// </summary> /// <param name="args"></param> static void Main(string[] args) { movies = new List<IMovieDetails>(); var exportData = true; char keyResponse = Char.MinValue; OutputProviderHost outputProviderHost = null; try { outputProviderHost = new OutputProviderHost(); } catch (Exception ex) { Console.WriteLine("Application malfunctioned!"); } Console.WriteLine("Welcome to your Movie Aggregator app!"); Console.WriteLine("Let's get started!"); // Add movie to the list AddMovie(); Console.Write("Would you like to export the saved movies details to a readable format?"); keyResponse = Console.ReadLine()[0]; if (keyResponse != 'y' && keyResponse != 'Y') exportData = false; if (exportData) { // Create data from list of movies var movieDetailStr = CreateDataFromList(); try { // Export data using output providers ExportData(outputProviderHost, Encoding.UTF8.GetBytes(movieDetailStr)); } catch (Exception ex) { Console.WriteLine("Application malfunctioned! Export Failed!"); } Console.ReadKey(); } }
/// <summary> /// Export data using output provider /// </summary> /// <param name="outputProviderHost">Output provider host object</param> /// <param name="data">Output data in byte[]</param> private static void ExportData(OutputProviderHost outputProviderHost, byte[] data) { var outputFormats = outputProviderHost.GetOutputProviderFormats(); if (outputFormats.Count > 0) { Console.WriteLine("In which file format would you like to export the saved movies details?"); for (int index = 0; index < outputFormats.Count; index++) { Console.WriteLine(string.Concat(index + 1, ": ", outputFormats[index])); } Console.Write("Enter the format number: "); UInt16 formatChoice = Convert.ToUInt16(Console.ReadLine()); var result = outputProviderHost.Output(data, outputFormats[formatChoice - 1]); if (result) { Console.WriteLine("Data exported successfully!"); } else { Console.WriteLine("Data export failed!"); } } else { Console.WriteLine("Data export failed!"); } }