Exemple #1
0
        static int DisplayHashesFor(string connectionString, List <Query> queries, OutDir outDir, Formatter fn, HashAlgorithm algorithm)
        {
            var padding = queries.Select(q => q.Name.Length).Max();

            var results = queries.Select(AsHashResult);

            int exitCode = 0;

            foreach (var result in results)
            {
                exitCode = Math.Max(result.ExitCode, exitCode);
                DisplayHashFor(result);
            }
            return(exitCode);

            HashResult AsHashResult(Query query) =>
            GetHashResultFor(connectionString, query.Name, query.CommandText, outDir, fn, algorithm);

            void DisplayHashFor(HashResult hashResult)
            {
                Console.Out.Write(hashResult.QueryName.PadRight(padding, ' '));
                Console.Out.Write("  ");
                hashResult.PrintValue(Console.Out, Console.Error);
            }
        }
Exemple #2
0
        static string ComputeHash(string connectionString, string name, string commandText, OutDir outDir, Formatter fn, HashAlgorithm algorithm)
        {
            string file = outDir.AddFile(name);
            string text;

            using (var stream = LoadData(connectionString, file, commandText, fn))
            {
                byte[]        hash = algorithm.ComputeHash(stream);
                StringBuilder sb   = new StringBuilder(2 + hash.Length * 2);

                sb.Append("0x");
                foreach (var b in hash)
                {
                    sb.Append(b.ToString("X2"));
                }
                text = sb.ToString();
            }
            return(text);
        }
Exemple #3
0
        static HashResult GetHashResultFor(string connectionString, string name, string commandText, OutDir outDir, Formatter fn, HashAlgorithm algorithm)
        {
            Result <string, Exception> r = Try(ComputeHash, connectionString, name, commandText, outDir, fn, algorithm);

            return(r.Map(hash => HashResult.Hash(name, hash))
                   .MapError(ex => HashResult.Error(name, ex.ToString()))
                   .UnwrapEither());
        }