コード例 #1
0
 /// <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;
 }
コード例 #2
0
        /// <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);
        }