public VirtualLoadInfo(IFileState parentFileState, IArchiveState archiveState, ArchiveFileInfo afi, IFilePlugin plugin) : this(parentFileState, archiveState, afi) { ContractAssertions.IsNotNull(plugin, nameof(plugin)); Plugin = plugin; }
public ArchiveContext(ContextNode contextNode, IContext parentContext, IInternalPluginManager pluginManager) : base(pluginManager, contextNode) { ContractAssertions.IsNotNull(contextNode, nameof(contextNode)); ContractAssertions.IsNotNull(parentContext, nameof(parentContext)); _stateInfo = contextNode.StateInfo; _archiveState = _stateInfo.PluginState as IArchiveState; _archiveFileSystem = FileSystemFactory.CreateAfiFileSystem(_stateInfo); _parentContext = parentContext; }
public VirtualLoadInfo(IFileState parentFileState, IArchiveState archiveState, ArchiveFileInfo afi) { ContractAssertions.IsNotNull(parentFileState, nameof(parentFileState)); ContractAssertions.IsNotNull(archiveState, nameof(archiveState)); ContractAssertions.IsNotNull(afi, nameof(afi)); ContractAssertions.IsElementContained(archiveState.Files, afi, nameof(archiveState), nameof(afi)); ParentFileState = parentFileState; ArchiveState = archiveState; Afi = afi; }
private void InjectArchive(IArchiveState archiveState, UPath filePath, IFileSystem destinationFileSystem) { foreach (var afi in archiveState.Files) { var path = filePath / afi.FilePath.ToRelative(); if (!destinationFileSystem.FileExists(path)) { continue; } var afiFileStream = destinationFileSystem.OpenFile(path); afi.SetFileData(afiFileStream); } }
private async Task ExtractArchive(IArchiveState archiveState, IFileSystem destinationFileSystem, UPath filePath) { if (archiveState.Files.Count > 0) { CreateDirectory(destinationFileSystem, filePath); } foreach (var afi in archiveState.Files) { var newFileStream = destinationFileSystem.OpenFile(filePath / afi.FilePath.ToRelative(), FileMode.Create, FileAccess.Write); (await afi.GetFileData()).CopyTo(newFileStream); newFileStream.Close(); } }