From d95c74ee260aa096021107b450cc833e6b7700bb Mon Sep 17 00:00:00 2001 From: Alex Wichmann Date: Sun, 26 Oct 2025 01:01:27 +0200 Subject: [PATCH 1/6] Fix: Try read relative uri's as files. Signed-off-by: Alex Wichmann --- .../Services/DefaultStreamLoader.cs | 50 ++++++++++++------- 1 file changed, 32 insertions(+), 18 deletions(-) diff --git a/src/ByteBard.AsyncAPI.Readers/Services/DefaultStreamLoader.cs b/src/ByteBard.AsyncAPI.Readers/Services/DefaultStreamLoader.cs index 6ccd69b..beca1f5 100644 --- a/src/ByteBard.AsyncAPI.Readers/Services/DefaultStreamLoader.cs +++ b/src/ByteBard.AsyncAPI.Readers/Services/DefaultStreamLoader.cs @@ -15,20 +15,27 @@ public Stream Load(Uri uri) { try { - switch (uri.Scheme) + if (uri.IsAbsoluteUri && !string.IsNullOrEmpty(uri.Scheme)) { - case "file": - return File.OpenRead(uri.AbsolutePath); - case "http": - case "https": - return HttpClient.GetStreamAsync(uri).GetAwaiter().GetResult(); - default: - throw new ArgumentException("Unsupported scheme"); + switch (uri.Scheme.ToLowerInvariant()) + { + case "file": + return File.OpenRead(uri.AbsolutePath); + case "http": + case "https": + return HttpClient.GetStreamAsync(uri).GetAwaiter().GetResult(); + default: + throw new ArgumentException("Unsupported scheme"); + } + } + else + { + return File.OpenRead(uri.OriginalString); } } catch (Exception ex) { - throw new AsyncApiReaderException($"Something went wrong trying to fetch '{uri.OriginalString}. {ex.Message}'", ex); + throw new AsyncApiReaderException($"Something went wrong trying to fetch '{uri.OriginalString}'. {ex.Message}", ex); } } @@ -36,15 +43,22 @@ public async Task LoadAsync(Uri uri) { try { - switch (uri.Scheme) + if (uri.IsAbsoluteUri && !string.IsNullOrEmpty(uri.Scheme)) + { + switch (uri.Scheme.ToLowerInvariant()) + { + case "file": + return File.OpenRead(uri.AbsolutePath); + case "http": + case "https": + return HttpClient.GetStreamAsync(uri).GetAwaiter().GetResult(); + default: + throw new ArgumentException("Unsupported scheme"); + } + } + else { - case "file": - return File.OpenRead(uri.AbsolutePath); - case "http": - case "https": - return await HttpClient.GetStreamAsync(uri); - default: - throw new ArgumentException("Unsupported scheme"); + return File.OpenRead(uri.OriginalString); } } catch (Exception ex) @@ -53,4 +67,4 @@ public async Task LoadAsync(Uri uri) } } } -} \ No newline at end of file +} From 69637b1609613d1a515413207571c86748ffd83f Mon Sep 17 00:00:00 2001 From: Alex Wichmann Date: Sun, 26 Oct 2025 01:10:09 +0200 Subject: [PATCH 2/6] Update src/ByteBard.AsyncAPI.Readers/Services/DefaultStreamLoader.cs Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Signed-off-by: Alex Wichmann --- src/ByteBard.AsyncAPI.Readers/Services/DefaultStreamLoader.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ByteBard.AsyncAPI.Readers/Services/DefaultStreamLoader.cs b/src/ByteBard.AsyncAPI.Readers/Services/DefaultStreamLoader.cs index beca1f5..9184a08 100644 --- a/src/ByteBard.AsyncAPI.Readers/Services/DefaultStreamLoader.cs +++ b/src/ByteBard.AsyncAPI.Readers/Services/DefaultStreamLoader.cs @@ -20,7 +20,7 @@ public Stream Load(Uri uri) switch (uri.Scheme.ToLowerInvariant()) { case "file": - return File.OpenRead(uri.AbsolutePath); + return File.OpenRead(uri.LocalPath); case "http": case "https": return HttpClient.GetStreamAsync(uri).GetAwaiter().GetResult(); From 162fb5b4331ba7524f59e2ce2bcf40c171ca6aac Mon Sep 17 00:00:00 2001 From: Alex Wichmann Date: Sun, 26 Oct 2025 01:13:23 +0200 Subject: [PATCH 3/6] Apply suggestion from @VisualBean Signed-off-by: Alex Wichmann --- src/ByteBard.AsyncAPI.Readers/Services/DefaultStreamLoader.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ByteBard.AsyncAPI.Readers/Services/DefaultStreamLoader.cs b/src/ByteBard.AsyncAPI.Readers/Services/DefaultStreamLoader.cs index 9184a08..6ef02c8 100644 --- a/src/ByteBard.AsyncAPI.Readers/Services/DefaultStreamLoader.cs +++ b/src/ByteBard.AsyncAPI.Readers/Services/DefaultStreamLoader.cs @@ -51,7 +51,7 @@ public async Task LoadAsync(Uri uri) return File.OpenRead(uri.AbsolutePath); case "http": case "https": - return HttpClient.GetStreamAsync(uri).GetAwaiter().GetResult(); + return await HttpClient.GetStreamAsync(uri); default: throw new ArgumentException("Unsupported scheme"); } From 4eb847448b9380bd91a05f5dcc59bc63904273eb Mon Sep 17 00:00:00 2001 From: Alex Wichmann Date: Sun, 26 Oct 2025 01:13:28 +0200 Subject: [PATCH 4/6] Apply suggestion from @VisualBean Signed-off-by: Alex Wichmann --- src/ByteBard.AsyncAPI.Readers/Services/DefaultStreamLoader.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ByteBard.AsyncAPI.Readers/Services/DefaultStreamLoader.cs b/src/ByteBard.AsyncAPI.Readers/Services/DefaultStreamLoader.cs index 6ef02c8..e0b7d92 100644 --- a/src/ByteBard.AsyncAPI.Readers/Services/DefaultStreamLoader.cs +++ b/src/ByteBard.AsyncAPI.Readers/Services/DefaultStreamLoader.cs @@ -15,7 +15,7 @@ public Stream Load(Uri uri) { try { - if (uri.IsAbsoluteUri && !string.IsNullOrEmpty(uri.Scheme)) + if (uri.IsAbsoluteUri) { switch (uri.Scheme.ToLowerInvariant()) { From 7a2ea912e4c1b57cd70b36c1a979790bfd8a32e2 Mon Sep 17 00:00:00 2001 From: Alex Wichmann Date: Sun, 26 Oct 2025 01:13:35 +0200 Subject: [PATCH 5/6] Apply suggestion from @VisualBean Signed-off-by: Alex Wichmann --- src/ByteBard.AsyncAPI.Readers/Services/DefaultStreamLoader.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ByteBard.AsyncAPI.Readers/Services/DefaultStreamLoader.cs b/src/ByteBard.AsyncAPI.Readers/Services/DefaultStreamLoader.cs index e0b7d92..2289d75 100644 --- a/src/ByteBard.AsyncAPI.Readers/Services/DefaultStreamLoader.cs +++ b/src/ByteBard.AsyncAPI.Readers/Services/DefaultStreamLoader.cs @@ -43,7 +43,7 @@ public async Task LoadAsync(Uri uri) { try { - if (uri.IsAbsoluteUri && !string.IsNullOrEmpty(uri.Scheme)) + if (uri.IsAbsoluteUri) { switch (uri.Scheme.ToLowerInvariant()) { From 6020b6664643e3776d10c3e15ae2c8a5fc3bc3ad Mon Sep 17 00:00:00 2001 From: Alex Wichmann Date: Sun, 26 Oct 2025 01:15:23 +0200 Subject: [PATCH 6/6] Apply suggestion from @VisualBean Signed-off-by: Alex Wichmann --- src/ByteBard.AsyncAPI.Readers/Services/DefaultStreamLoader.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ByteBard.AsyncAPI.Readers/Services/DefaultStreamLoader.cs b/src/ByteBard.AsyncAPI.Readers/Services/DefaultStreamLoader.cs index 2289d75..e753d0c 100644 --- a/src/ByteBard.AsyncAPI.Readers/Services/DefaultStreamLoader.cs +++ b/src/ByteBard.AsyncAPI.Readers/Services/DefaultStreamLoader.cs @@ -48,7 +48,7 @@ public async Task LoadAsync(Uri uri) switch (uri.Scheme.ToLowerInvariant()) { case "file": - return File.OpenRead(uri.AbsolutePath); + return File.OpenRead(uri.LocalPath); case "http": case "https": return await HttpClient.GetStreamAsync(uri);