// Methods public override async Task <StepResults> Perform(Dictionary <string, object> variableCache, IProgress <ProgressReport> progress) { var column = StartMessage.Trim().Length > 0 ? ": " : ""; var progressReport = new ProgressReport(); var stepResults = new StepResults { Message = column + Common.ProcessVariableTokens(ValidMessage, variableCache), Status = StepStatus.Success }; progress.Report(new ProgressReport { Message = Common.ProcessVariableTokens(StartMessage, variableCache), Percentage = 0, NewLine = false }); await Task.Delay(10); if ((Variable == string.Empty && Path == string.Empty) || (Variable != string.Empty && !variableCache.ContainsKey(Variable))) { stepResults.Message = $"{column}A file was not provided."; stepResults.Status = StepStatus.Failure; } else if (Hash == string.Empty) { stepResults.Message = $"{column}A hash was not provided."; stepResults.Status = StepStatus.Failure; } var file = string.Empty; if (stepResults.Status == StepStatus.Success) { if (variableCache.ContainsKey(Variable)) { file = variableCache[Variable].ToString(); } else { file = Common.ProcessVariableTokens(Path, variableCache); } if (!File.Exists(file)) { stepResults.Message = $"{column}The file provided does not exist."; stepResults.Status = StepStatus.Failure; } } var result = string.Empty; if (stepResults.Status == StepStatus.Success) { switch (Type) { case HashTypes.None: stepResults.Message = $"{column}A hash type was not selected."; stepResults.Status = StepStatus.Failure; break; case HashTypes.SHA1: result = await SHA1Hash.ComputeHashAsync(File.OpenRead(file), progress); if (Hash.ToUpper() != result) { stepResults.Message = $"\r\nExpected {Hash.ToUpper()} but got {result.ToUpper()} instead.\r\n" + Common.ProcessVariableTokens(InvalidMessage, variableCache); stepResults.Status = StepStatus.Failure; } break; case HashTypes.SHA256: result = await SHA256Hash.ComputeHashAsync(File.OpenRead(file), progress); if (Hash.ToUpper() != result) { stepResults.Message = $"\r\nExpected {Hash.ToUpper()} but got {result.ToUpper()} instead.\r\n" + Common.ProcessVariableTokens(InvalidMessage, variableCache); stepResults.Status = StepStatus.Failure; } break; } } progress.Report(progressReport); return(stepResults); }
// Methods public override async Task <StepResults> Perform(Dictionary <string, object> variableCache, IProgress <ProgressReport> progress) { var progressReport = new ProgressReport(); var stepResults = new StepResults { Message = Common.ProcessVariableTokens(ValidMessage, variableCache), Status = StepStatus.Success }; Hash = Hash.ToUpper(); progress.Report(new ProgressReport { Message = StartMessage, Percentage = 0 }); if (Variable == string.Empty || !variableCache.ContainsKey(Variable)) { stepResults.Message = $"{Name}: A file was not provided."; stepResults.Status = StepStatus.Failure; } else if (!File.Exists(variableCache[Variable].ToString())) { stepResults.Message = $"{Name}: The file provided does not exist."; stepResults.Status = StepStatus.Failure; } else if (Hash == string.Empty) { stepResults.Message = $"{Name}: A hash was not provided."; stepResults.Status = StepStatus.Failure; } var result = string.Empty; if (stepResults.Status == StepStatus.Success) { switch (Type) { case HashTypes.None: stepResults.Message = $"{Name}: A hash type was not selected."; stepResults.Status = StepStatus.Failure; break; case HashTypes.SHA1: result = await SHA1Hash.ComputeHashAsync(File.OpenRead(variableCache[Variable].ToString()), progress); if (Hash != result) { stepResults.Message = $"Expected {Hash} but got {result} instead.\r\n" + Common.ProcessVariableTokens(InvalidMessage, variableCache); stepResults.Status = StepStatus.Failure; } break; case HashTypes.SHA256: result = await SHA256Hash.ComputeHashAsync(File.OpenRead(variableCache[Variable].ToString()), progress); if (Hash != result) { stepResults.Message = $"Expected {Hash} but got {result} instead.\r\n" + Common.ProcessVariableTokens(InvalidMessage, variableCache); stepResults.Status = StepStatus.Failure; } break; } } progress.Report(progressReport); return(stepResults); }