summaryrefslogtreecommitdiff
path: root/Blog/Components
diff options
context:
space:
mode:
authorMarijn Besseling <njirambem@gmail.com>2025-09-21 17:47:15 +0200
committerMarijn Besseling <njirambem@gmail.com>2025-09-21 17:47:45 +0200
commit93f038ffa95f1c2f4780c684a1b780666b086882 (patch)
tree7d96bb172a74ccab873286730f644805321e8e89 /Blog/Components
parentda78a550c829653bdf6029578ff75be250addc0d (diff)
Add BRP Test data
Diffstat (limited to 'Blog/Components')
-rw-r--r--Blog/Components/App.razor1
-rw-r--r--Blog/Components/Pages/BRP.razor8
-rw-r--r--Blog/Components/Pages/BRP.razor.cs37
-rw-r--r--Blog/Components/Pages/BrpTestData.razor12
-rw-r--r--Blog/Components/Pages/BrpTestData.razor.cs31
-rw-r--r--Blog/Components/_Shared/JsonRender.razor51
6 files changed, 140 insertions, 0 deletions
diff --git a/Blog/Components/App.razor b/Blog/Components/App.razor
index 147be34..6025047 100644
--- a/Blog/Components/App.razor
+++ b/Blog/Components/App.razor
@@ -53,6 +53,7 @@
53 <li><NavLink href="/note">Note</NavLink></li> 53 <li><NavLink href="/note">Note</NavLink></li>
54 <li><NavLink href="/qrcodeScan">QR-code scanner</NavLink></li> 54 <li><NavLink href="/qrcodeScan">QR-code scanner</NavLink></li>
55 <li><NavLink href="/qrcodeGenerator">QR-code generator</NavLink></li> 55 <li><NavLink href="/qrcodeGenerator">QR-code generator</NavLink></li>
56 <li><NavLink href="/BRPTestData">BRP Test Data</NavLink></li>
56 <!-- <li><a href="/webrtc.html">WebRTC</a></li> --> 57 <!-- <li><a href="/webrtc.html">WebRTC</a></li> -->
57 <!-- <li><a href="/spotify/index.html">Spotify</a></li> --> 58 <!-- <li><a href="/spotify/index.html">Spotify</a></li> -->
58 </ul> 59 </ul>
diff --git a/Blog/Components/Pages/BRP.razor b/Blog/Components/Pages/BRP.razor
new file mode 100644
index 0000000..6595d3a
--- /dev/null
+++ b/Blog/Components/Pages/BRP.razor
@@ -0,0 +1,8 @@
1@page "/BRP/{BSN}"
2@using System.Text.Json
3<PageTitle>BRP</PageTitle>
4
5<main>
6 <JsonRender Element="Entry?.RootElement"></JsonRender>
7</main>
8
diff --git a/Blog/Components/Pages/BRP.razor.cs b/Blog/Components/Pages/BRP.razor.cs
new file mode 100644
index 0000000..e7298a9
--- /dev/null
+++ b/Blog/Components/Pages/BRP.razor.cs
@@ -0,0 +1,37 @@
1using System.Text.Json;
2using System.Text.RegularExpressions;
3using Blog.Services;
4using Microsoft.AspNetCore.Components;
5using Microsoft.AspNetCore.Mvc;
6
7namespace Blog.Components.Pages;
8
9public partial class BRP : ComponentBase
10{
11 [Parameter]
12 public required string BSN { get; set; }
13
14 [Inject]
15 public required BrpService Service { get; set; }
16
17 private JsonDocument Entry { get; set; }
18
19 protected override async Task OnInitializedAsync()
20 {
21 Entry = await Service.GetBrpEntryAsync(BSN).ConfigureAwait(true);
22 await base.OnInitializedAsync();
23 }
24
25 internal static string Url(string bsn)
26 {
27 return $"/BRP/{bsn}";
28 }
29
30 internal static bool LooksLikeBSN(string value)
31 {
32 return BsnRegex().IsMatch(value);
33 }
34
35 [GeneratedRegex(@"^\d{8,9}$", RegexOptions.NonBacktracking)]
36 private static partial Regex BsnRegex();
37} \ No newline at end of file
diff --git a/Blog/Components/Pages/BrpTestData.razor b/Blog/Components/Pages/BrpTestData.razor
new file mode 100644
index 0000000..1b6240e
--- /dev/null
+++ b/Blog/Components/Pages/BrpTestData.razor
@@ -0,0 +1,12 @@
1@page "/BRPTestData"
2<PageTitle>BRP Test Data</PageTitle>
3
4<main>
5 @foreach (var entry in Entries)
6 {
7 <div>
8 <NavLink href=@($"/BRP/{@entry.bsn}")>@entry.bsn</NavLink>
9 @entry.naam
10 </div>
11 }
12</main> \ No newline at end of file
diff --git a/Blog/Components/Pages/BrpTestData.razor.cs b/Blog/Components/Pages/BrpTestData.razor.cs
new file mode 100644
index 0000000..9d0fb35
--- /dev/null
+++ b/Blog/Components/Pages/BrpTestData.razor.cs
@@ -0,0 +1,31 @@
1using Blog.Models;
2using Blog.Services;
3using System.Linq;
4using Microsoft.AspNetCore.Components;
5
6namespace Blog.Components.Pages;
7
8public partial class BrpTestData : ComponentBase, IDisposable
9{
10 public void Dispose()
11 {
12 CancellationTokenSource.Cancel();
13 CancellationTokenSource.Dispose();
14 }
15
16 [Inject]
17 public BrpService Service { get; set; }
18
19 private CancellationTokenSource CancellationTokenSource { get; set; } = new CancellationTokenSource();
20
21 protected override async Task OnInitializedAsync()
22 {
23 this.Entries = (await Service.GetBrpEntriesAsync(CancellationTokenSource.Token)
24 .ConfigureAwait(true))
25 .Where(entry => entry.bsn[0] != '1')
26 .ToArray();
27 await base.OnInitializedAsync();
28 }
29
30 private BRPEntry[] Entries { get; set; } = [];
31} \ No newline at end of file
diff --git a/Blog/Components/_Shared/JsonRender.razor b/Blog/Components/_Shared/JsonRender.razor
new file mode 100644
index 0000000..17e08a1
--- /dev/null
+++ b/Blog/Components/_Shared/JsonRender.razor
@@ -0,0 +1,51 @@
1@using System.Text.Json
2@using Blog.Components.Pages
3@code {
4
5 [Parameter]
6 public JsonElement? Element { get; set; }
7}
8@if (Element is { } element)
9{
10 @switch (element.ValueKind)
11 {
12 case JsonValueKind.Object:
13 {
14 <ul>
15 @foreach (var property in element.EnumerateObject())
16 {
17 <li>
18 <span class="name">@property.Name</span>
19 <JsonRender Element="property.Value"/>
20 </li>
21 }
22 </ul>
23 break;
24 }
25 case JsonValueKind.Array:
26 {
27 <ol>
28 @foreach (var item in element.EnumerateArray())
29 {
30 <li>
31 <JsonRender Element="item"></JsonRender>
32 </li>
33 }
34 </ol>
35 break;
36 }
37 case JsonValueKind.String:
38 {
39 string value = element.GetString() ?? string.Empty;
40 @if (BRP.LooksLikeBSN(value))
41 {
42 <NavLink href=@BRP.Url(value)>@value</NavLink>
43 }
44 else
45 {
46 <span>@value</span>
47 }
48 break;
49 }
50 }
51}