private FileIntegrity CheckFile(AppContentSummaryFile file) { if (!File.Exists(_localDirectory.Path.PathCombine(file.Path))) { return(new FileIntegrity(file.Path, FileIntegrityStatus.MissingData)); } if (!_localMetaData.IsEntryRegistered(file.Path)) { return(new FileIntegrity(file.Path, FileIntegrityStatus.MissingMetaData)); } if (_localMetaData.GetEntryVersionId(file.Path) != _versionId) { return(new FileIntegrity(file.Path, FileIntegrityStatus.InvalidVersion)); } string hash = HashCalculator.ComputeFileHash(_localDirectory.Path.PathCombine(file.Path)); if (hash != file.Hash) { return(new FileIntegrity(file.Path, FileIntegrityStatus.InvalidHash)); } // TODO: Check file size (always). return(new FileIntegrity(file.Path, FileIntegrityStatus.Ok)); }
private FileIntegrity CheckFile(AppContentSummaryFile file) { Action onVerificationFailed = () => { PatcherStatistics.DispatchSendEvent(PatcherStatistics.Event.FileVerificationFailed, new PatcherStatistics.OptionalParams { FileName = file.Path, Size = file.Size, }); }; string localPath = _localDirectory.Path.PathCombine(file.Path); if (!File.Exists(localPath)) { onVerificationFailed(); return(new FileIntegrity(file.Path, FileIntegrityStatus.MissingData)); } if (!_localMetaData.IsEntryRegistered(file.Path)) { onVerificationFailed(); return(new FileIntegrity(file.Path, FileIntegrityStatus.MissingMetaData)); } int actualVersionId = _localMetaData.GetEntryVersionId(file.Path); if (actualVersionId != _versionId) { onVerificationFailed(); return(FileIntegrity.InvalidVersion(_versionId, actualVersionId, file.Path)); } if (_isCheckingSize) { long actualSize = new FileInfo(localPath).Length; if (actualSize != file.Size) { onVerificationFailed(); return(FileIntegrity.InvalidSize(file.Size, actualSize, file.Path)); } } if (_isCheckingHash) { string actualFileHash = HashCalculator.ComputeFileHash(localPath); if (actualFileHash != file.Hash) { onVerificationFailed(); return(FileIntegrity.InvalidHash(file.Hash, actualFileHash, file.Path)); } } return(new FileIntegrity(file.Path, FileIntegrityStatus.Ok)); }
private FileIntegrity CheckFile(AppContentSummaryFile file) { string localPath = _localDirectory.Path.PathCombine(file.Path); if (!File.Exists(localPath)) { return(new FileIntegrity(file.Path, FileIntegrityStatus.MissingData)); } if (!_localMetaData.IsEntryRegistered(file.Path)) { return(new FileIntegrity(file.Path, FileIntegrityStatus.MissingMetaData)); } if (_localMetaData.GetEntryVersionId(file.Path) != _versionId) { return(new FileIntegrity(file.Path, FileIntegrityStatus.InvalidVersion)); } if (_isCheckingSize) { long size = new FileInfo(localPath).Length; if (size != file.Size) { return(new FileIntegrity(file.Path, FileIntegrityStatus.InvalidSize)); } } if (_isCheckingHash) { string hash = HashCalculator.ComputeFileHash(localPath); if (hash != file.Hash) { return(new FileIntegrity(file.Path, FileIntegrityStatus.InvalidHash)); } } return(new FileIntegrity(file.Path, FileIntegrityStatus.Ok)); }