コード例 #1
0
ファイル: Program.cs プロジェクト: sr-lab/pwned-api-wrapper
        /// <summary>
        /// Launches interactive mode with the specified client.
        /// </summary>
        /// <param name="client">The client to use.</param>
        private static void LaunchInteractiveMode(IPwnedClient client)
        {
            Console.WriteLine($"Interactive mode launched against service: {client.GetInteractiveModePrompt()}");
            string buffer;

            do
            {
                // Prompt for password.
                Console.Write($"{client.GetInteractiveModePrompt()}> ");
                buffer = Console.ReadLine();

                // Output result.
                Console.WriteLine(client.GetNumberOfAppearances(buffer) + " occurrences found.");
            } while (buffer != "exit"); // Read until exit.

            // Say goodbye and quit.
            Console.WriteLine("Bye!");
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: sr-lab/pwned-api-wrapper
        /// <summary>
        /// Generates and outputs results for a batch-mode operation.
        /// </summary>
        /// <param name="service">The service to use for the operation.</param>
        /// <param name="passwords">The passwords to get frequencies for.</param>
        /// <param name="format">The format to output results in.</param>
        private static void GenerateResults(IPwnedClient service, string[] passwords, string format)
        {
            // Query service.
            var results = service.GetNumberOfAppearancesForAll(passwords);

            // Plain output goes straight to console.
            switch (format)
            {
            case "plain":

                // Plain is just plain CSV.
                Console.WriteLine("password, appearances");
                foreach (var entry in results)
                {
                    Console.WriteLine($"\"{entry.Key.Replace("\"", "\"\"")}\", {entry.Value}");
                }

                break;

            case "coq":

                // Coq lookup format needs placing into template.
                var output = new StringBuilder();
                var first  = true;
                foreach (var entry in results)
                {
                    if (!first)
                    {
                        output.Append(";");
                        output.AppendLine();
                    }
                    output.Append($"  (\"{entry.Key}\", {entry.Value} # 1)");
                    first = false;
                }

                // Output template to console with placeholders filled.
                Console.Write(Properties.Resources.coq_template
                              .Replace("%NAME", "pwned_passwords_output")
                              .Replace("%PASSWORDS", output.ToString()));

                break;
            }
        }