From fd2e74e6584ef77103fb8c5786a07619b6119fba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tommy=20=C3=96man?= Date: Sat, 9 Aug 2025 09:14:32 +0200 Subject: [PATCH] Lesson 10 - Displaying Json --- SpectreDemos/Helpers.cs | 25 +++++++++++++++++++++ SpectreDemos/Program.cs | 37 ++++++++++++++++++++++++-------- SpectreDemos/SpectreDemos.csproj | 1 + 3 files changed, 54 insertions(+), 9 deletions(-) create mode 100644 SpectreDemos/Helpers.cs diff --git a/SpectreDemos/Helpers.cs b/SpectreDemos/Helpers.cs new file mode 100644 index 0000000..0b13fe1 --- /dev/null +++ b/SpectreDemos/Helpers.cs @@ -0,0 +1,25 @@ +using Spectre.Console; + +namespace SpectreDemos; + +public static class Helpers +{ + public static async Task FetchApiDataAsync(string apiUrl) + { + using var client = new HttpClient(); + + try + { + HttpResponseMessage response = await client.GetAsync(apiUrl); + response.EnsureSuccessStatusCode(); + return await response.Content.ReadAsStringAsync(); + + } + catch (Exception ex) + { + AnsiConsole.MarkupLine($"[red]Error fetching data from API:[/]{ex.Message}"); + return string.Empty; + } + + } +} diff --git a/SpectreDemos/Program.cs b/SpectreDemos/Program.cs index bcd09d1..9789ba6 100644 --- a/SpectreDemos/Program.cs +++ b/SpectreDemos/Program.cs @@ -1,4 +1,6 @@ using Spectre.Console; +using Spectre.Console.Json; +using SpectreDemos; #region "Previous Lessons" //Lesson 2 - Initial Setup @@ -149,20 +151,37 @@ ////panel.Padding(2, 1); ////AnsiConsole.Write(panel); -#endregion // Lesson 9 - FIGlet Text -AnsiConsole.Write(new FigletText("Hello") - .Centered() - .Color(Color.Red) -); +////AnsiConsole.Write(new FigletText("Hello") +//// .Centered() +//// .Color(Color.Red) +////); -FigletText figlet = new("World"); -figlet.Centered(); -figlet.Color(Color.Red); +////FigletText figlet = new("World"); +////figlet.Centered(); +////figlet.Color(Color.Red); -AnsiConsole.Write(figlet); +////AnsiConsole.Write(figlet); +#endregion + +// Lesson 10 - Displaying Json + +string jsonResponse = await Helpers.FetchApiDataAsync("https://thesampleapi.com/courses/12"); + +JsonText json = new JsonText(jsonResponse); + +json.StringColor(Color.Yellow); +json.ColonColor(Color.Orange1); + + +AnsiConsole.Write( + new Panel(json) + .Header("API Results") + .Collapse() + .BorderColor(Color.White) + ); Console.ReadLine(); AnsiConsole.Clear(); diff --git a/SpectreDemos/SpectreDemos.csproj b/SpectreDemos/SpectreDemos.csproj index 85998ac..425079a 100644 --- a/SpectreDemos/SpectreDemos.csproj +++ b/SpectreDemos/SpectreDemos.csproj @@ -9,6 +9,7 @@ +