diff --git a/JsonCanonicalizer.BL/Canonicalizer.cs b/JsonCanonicalizer.BL/Canonicalizer.cs index 14f6a69..c09fb3e 100644 --- a/JsonCanonicalizer.BL/Canonicalizer.cs +++ b/JsonCanonicalizer.BL/Canonicalizer.cs @@ -1,10 +1,25 @@ -using System.Runtime.Serialization; -using System.Text.Json; +using System.Text.Json; namespace JsonCanonicalizer.BL; public class Canonicalizer { + public static void Canonicalize(Stream from, Stream to) + { + using var doc = JsonDocument.Parse(from); + + var writerOptions = new JsonWriterOptions + { + Indented = true, + Encoder = System.Text.Encodings.Web.JavaScriptEncoder.UnsafeRelaxedJsonEscaping + }; + + using var writer = new Utf8JsonWriter(to, writerOptions); + + WriteSorted(writer, doc.RootElement); + writer.Flush(); + } + public static void WriteSorted(Utf8JsonWriter writer, JsonElement element) { switch (element.ValueKind) diff --git a/JsonCanonicalizer/Program.cs b/JsonCanonicalizer/Program.cs index 3273ff0..c636e4a 100644 --- a/JsonCanonicalizer/Program.cs +++ b/JsonCanonicalizer/Program.cs @@ -1,27 +1,18 @@ -using System.Text.Json; +using JsonCanonicalizer.BL; +using System.Text.Json; namespace JsonCanonicalizer { class Program { - static int Main(string[] args) + static int Main(string[] _) { try { using var inputStream = Console.OpenStandardInput(); - using var doc = JsonDocument.Parse(inputStream); - - var writerOptions = new JsonWriterOptions - { - Indented = true, - Encoder = System.Text.Encodings.Web.JavaScriptEncoder.UnsafeRelaxedJsonEscaping - }; - using var outputStream = Console.OpenStandardOutput(); - using var writer = new Utf8JsonWriter(outputStream, writerOptions); - BL.Canonicalizer.WriteSorted(writer, doc.RootElement); - writer.Flush(); + Canonicalizer.Canonicalize(inputStream, outputStream); Console.Out.WriteLine(); return 0;