/// <summary> /// Loads and parses input file or archive to ePub in memory representation /// </summary> /// <param name="fileName">file to load</param> /// <returns></returns> public bool LoadAndCheckFB2Files(string fileName) { Logger.Log.InfoFormat("Starting to convert {0}", fileName); _fb2Files.Clear(); if (!File.Exists(fileName)) { Logger.Log.ErrorFormat("Unable to locate file {0} on disk.", fileName); return false; } switch (FileTypeDetector.DetectFileType(fileName)) { case FileTypeDetector.FileTypesEnum.FileTypeZIP: Logger.Log.InfoFormat("Loading ZIP : {0}",fileName); var fb2ZipLoader = new FB2ZipFileLoader(); try { _fb2Files.AddRange(fb2ZipLoader.LoadFile(fileName, Settings.FB2ImportSettings)); } catch (Exception) { Logger.Log.ErrorFormat("Error loading ZIP {0} :",fileName); return false; } break; case FileTypeDetector.FileTypesEnum.FileTypeFB2: Logger.Log.InfoFormat("Processing {0} ...", fileName); var fb2FileLoader = new FB2FileLoader(); try { _fb2Files.AddRange(fb2FileLoader.LoadFile(fileName,Settings.FB2ImportSettings)); } catch (Exception) { Logger.Log.ErrorFormat("Error loading FB2 {0} :", fileName); return false; } break; case FileTypeDetector.FileTypesEnum.FileTypeRAR: Logger.Log.InfoFormat("Loading RAR : {0}", fileName); var fb2RarLoader = new FB2RarLoader(); try { _fb2Files.AddRange(fb2RarLoader.LoadFile(fileName,Settings.FB2ImportSettings)); } catch (Exception) { Logger.Log.ErrorFormat("Error loading RAR {0} :", fileName); return false; } break; default: Logger.Log.InfoFormat("File {0} is of unsupported type",fileName); return false; } return true; }
/// <summary> /// Detects file type of the input file /// </summary> /// <param name="fileName"></param> /// <returns></returns> internal static FileTypesEnum DetectFileType(string fileName) { Logger.Log.DebugFormat("Detecting file type for {0}", fileName); var extension = Path.GetExtension(fileName); if (extension != null) { switch (extension.ToUpper()) { case ".FB2": Logger.Log.Debug("The file is FB2 file"); return(FileTypesEnum.FileTypeFB2); case ".ZIP": Logger.Log.Debug("The file is ZIP file"); return(FileTypesEnum.FileTypeZIP); case ".RAR": Logger.Log.Debug("The file is RAR file"); return(FileTypesEnum.FileTypeRAR); default: Logger.Log.Debug("Can't use extension - attempting to detect"); if (FB2ZipFileLoader.IsZipFile(fileName)) { Logger.Log.Debug("The file is ZIP file"); return(FileTypesEnum.FileTypeZIP); } if (FB2RarLoader.IsRarFile(fileName)) { Logger.Log.Debug("The file is RAR file"); return(FileTypesEnum.FileTypeRAR); } if (FB2FileLoader.IsFB2File(fileName)) { Logger.Log.Debug("The file is FB2 file"); return(FileTypesEnum.FileTypeFB2); } break; } } Logger.Log.Debug("The file is unknown file type"); return(FileTypesEnum.FileTypeUnknown); }