Namespace Archiver.Core.Interfaces
Interfaces
- IAntivirusScanService
T-F146. Scans an archive's expanded contents for threats via AMSI — deliberately not an extension of IArchiveService/ITarService (see docs/DECISIONS.md's T-F146 entry): this never writes anything to a real destination, has no conflict/MOTW dimension, and adding a method to those interfaces would ripple through every hand-rolled test fake in the repo for a capability that isn't a variant of extraction. Never throws — every failure becomes an Inconclusive ThreatFinding.
- IArchiveCreationRouter
Routes archive creation to IArchiveService (ZIP) or ITarService (tar-family) based on ArchiveOptions.Format. Unlike IExtractionRouter, this needs no per-path format detection — creation format is a single explicit choice for the whole operation.
- IArchiveListingRouter
Routes a single archive's ListEntriesAsync call to IArchiveService (ZIP) or ITarService (tar-family), based on ArchiveFormatDetector — same dispatch IExtractionRouter uses for extraction. A separate interface from IExtractionRouter because listing and extracting return different result shapes; one archive path in, one ArchiveListResult out (not a batch, unlike ExtractAsync — the archive browser always lists exactly one archive at a time). T-F250: Group Policy applies exactly as for extraction (ArchiveFormatPolicy) — a blocked format, or a tar-family format under DisableTarExtraction, is a failed result and no engine is called.
- IArchiveService
ZIP archive/extract/test/list operations via
System.IO.Compression. See ZipArchiveService for the real implementation.
- IExtractionRouter
Routes ExtractAsync calls to IArchiveService (ZIP) or ITarService (tar-family) per archive, based on ArchiveFormatDetector, and merges the results. Never throws — all errors are captured in ArchiveResult.Errors.
- IRecoveryService
PAR2 recovery data next to an archive: what is there, and repair from it (T-F275 step 4). The checks themselves are TestAsync(IReadOnlyList<string>, IProgress<ProgressReport>?, Func<PasswordPromptInfo, Task<PasswordDecision>>?, bool, CancellationToken).
- IRegistryReader
Minimal seam over the Windows registry for GroupPolicyService (T-F51) — kept deliberately small so tests use a hand-rolled fake instead of a mocking library (none is used in this repo). Both members return null for an absent key/value or a value of the wrong registry type; implementations never throw.
- ITarService
tar.exe-backed archive/extract/list/compress operations for the tar family (tar, gz, bz2, xz, zst, lzma) plus read-only 7z/rar support. See TarSandboxedService for the real implementation and its AppContainer sandboxing on the extraction path.