Beispiel #1
0
        public async Task Install()
        {
            Console.WriteLine("Getting link to latest ffmpeg");
            string link = await GetLinkFromWebPage();

            Console.WriteLine("Downloading ffmpeg");
            using (MemoryStream stream = await Download(link))
                using (SevenZipArchive archive = SevenZipArchive.Open(stream))
                {
                    Console.WriteLine("Unpacking ffmpeg");
                    string[] files = new string[] { "ffmpeg.exe", "ffprobe.exe" };
                    foreach (string file in files)
                    {
                        SevenZipArchiveEntry f = archive.Entries.First(x => x.Key.Contains(file));
                        string name            = f.Key.Substring(f.Key.LastIndexOf('/') + 1);
                        CheckDirAndCreate(FolderPath);
                        using (Stream entryStream = f.OpenEntryStream())
                            using (FileStream fileStream = File.OpenWrite(Path.Combine(FolderPath, name)))
                                await entryStream.CopyToAsync(fileStream);
                    }
                }
            Console.WriteLine("Update enviroment");
            SetEnvironment();
            Console.WriteLine("Set fontconfig");
            SetFontConfig();
            Console.WriteLine("Copying vp9.exe to " + FolderPath);
            string location = System.Reflection.Assembly.GetEntryAssembly().Location;

            File.Copy(location, Path.Combine(FolderPath, Path.GetFileName(location)));
        }
Beispiel #2
0
        public SqlDumpReader(string filePath)
        {
            string fileExtension = Path.GetExtension(filePath).ToLower();

            if (!SUPPORTED_DUMP_FILE_EXTENSIONS.Contains(fileExtension))
            {
                throw new Exception($"{fileExtension} is not in the list of supported database dump file extensions.");
            }
            switch (fileExtension.ToLower())
            {
            case ".zip":
                zipArchive = ZipArchive.Open(filePath);
                ZipArchiveEntry firstZipArchiveEntry = zipArchive.Entries.First();
                FileSize     = firstZipArchiveEntry.Size;
                streamReader = new StreamReader(firstZipArchiveEntry.OpenEntryStream());
                break;

            case ".rar":
                rarArchive = RarArchive.Open(filePath);
                RarArchiveEntry firstRarArchiveEntry = rarArchive.Entries.First();
                FileSize     = firstRarArchiveEntry.Size;
                streamReader = new StreamReader(firstRarArchiveEntry.OpenEntryStream());
                break;

            case ".gz":
                gZipArchive = GZipArchive.Open(filePath);
                GZipArchiveEntry firstGZipArchiveEntry = gZipArchive.Entries.First();
                FileSize     = firstGZipArchiveEntry.Size;
                streamReader = new StreamReader(firstGZipArchiveEntry.OpenEntryStream());
                break;

            case ".7z":
                sevenZipArchive = SevenZipArchive.Open(filePath);
                SevenZipArchiveEntry firstSevenZipArchiveEntry = sevenZipArchive.Entries.First();
                FileSize     = firstSevenZipArchiveEntry.Size;
                streamReader = new StreamReader(new PositioningStream(firstSevenZipArchiveEntry.OpenEntryStream()));
                break;

            default:
                FileSize     = new FileInfo(filePath).Length;
                streamReader = new StreamReader(filePath);
                break;
            }
            CurrentFilePosition = 0;
        }
Beispiel #3
0
        public SqlDumpReader(string filePath)
        {
            string fileExtension = Path.GetExtension(filePath);

            switch (fileExtension.ToLower())
            {
            case ".zip":
                zipArchive = ZipArchive.Open(filePath);
                ZipArchiveEntry firstZipArchiveEntry = zipArchive.Entries.First();
                FileSize     = firstZipArchiveEntry.Size;
                streamReader = new StreamReader(firstZipArchiveEntry.OpenEntryStream());
                break;

            case ".rar":
                rarArchive = RarArchive.Open(filePath);
                RarArchiveEntry firstRarArchiveEntry = rarArchive.Entries.First();
                FileSize     = firstRarArchiveEntry.Size;
                streamReader = new StreamReader(firstRarArchiveEntry.OpenEntryStream());
                break;

            case ".gz":
                gZipArchive = GZipArchive.Open(filePath);
                GZipArchiveEntry firstGZipArchiveEntry = gZipArchive.Entries.First();
                FileSize     = firstGZipArchiveEntry.Size;
                streamReader = new StreamReader(firstGZipArchiveEntry.OpenEntryStream());
                break;

            case ".7z":
                sevenZipArchive = SevenZipArchive.Open(filePath);
                SevenZipArchiveEntry firstSevenZipArchiveEntry = sevenZipArchive.Entries.First();
                FileSize     = firstSevenZipArchiveEntry.Size;
                streamReader = new StreamReader(firstSevenZipArchiveEntry.OpenEntryStream());
                break;

            default:
                FileSize     = new FileInfo(filePath).Length;
                streamReader = new StreamReader(filePath);
                break;
            }
            CurrentFilePosition = 0;
        }
Beispiel #4
0
 public PendingEntry(SevenZipArchiveEntry entry, string destination)
 {
     Entry       = entry;
     Destination = destination;
 }
Beispiel #5
0
        /// <summary>
        /// Archive Extraction Task
        /// </summary>
        /// <param name="_ArchiveSource">Source file path</param>
        /// <param name="ArchiveDestination">Destination folder path</param>
        /// <param name="_ArchiveType">Archive extension</param>
        /// <returns></returns>
        public Task <int> Extract(string _ArchiveSource, string ArchiveDestination, string _ArchiveType, ILog QuasarLogger)
        {
            try
            {
                switch (_ArchiveType)
                {
                case "rar":
                    using (var archive = RarArchive.Open(_ArchiveSource))
                    {
                        foreach (var entry in archive.Entries.Where(entry => !entry.IsDirectory))
                        {
                            entry.WriteToDirectory(ArchiveDestination, new ExtractionOptions()
                            {
                                ExtractFullPath = true,
                                Overwrite       = true
                            });
                        }
                    }
                    break;

                case "zip":
                    using (var archive = ZipArchive.Open(_ArchiveSource))
                    {
                        foreach (var entry in archive.Entries.Where(entry => !entry.IsDirectory))
                        {
                            entry.WriteToDirectory(ArchiveDestination, new ExtractionOptions()
                            {
                                ExtractFullPath = true,
                                Overwrite       = true
                            });
                        }
                    }

                    break;

                case "7z":
                    using (var archive = SevenZipArchive.Open(_ArchiveSource))
                    {
                        var reader = archive.ExtractAllEntries();
                        while (reader.MoveToNextEntry())
                        {
                            if (!reader.Entry.IsDirectory)
                            {
                                SevenZipArchiveEntry entry = (SevenZipArchiveEntry)reader.Entry;
                                entry.WriteToDirectory(ArchiveDestination, new ExtractionOptions()
                                {
                                    ExtractFullPath = true, Overwrite = true
                                });
                            }
                        }
                    }
                    break;

                default:

                    break;
                }
            }
            catch (Exception e)
            {
                QuasarLogger.Error(e.Message);
                QuasarLogger.Error(e.StackTrace);
            }


            return(Task.FromResult(1));
        }