Skip to content

Commit 2325a25

Browse files
committed
Refactor JSON merge logic into MergeJsonStrings method
1 parent 580c2c9 commit 2325a25

1 file changed

Lines changed: 18 additions & 13 deletions

File tree

UserSecretsExtension/UserSecretsExtensionStartupFilter.cs

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1+
using System.Text;
2+
using System.Text.Json;
3+
using System.Text.Json.Nodes;
14
using Microsoft.AspNetCore.Builder;
25
using Microsoft.AspNetCore.Hosting;
36
using Microsoft.AspNetCore.Http;
47
using Microsoft.Extensions.Configuration;
58
using Microsoft.Extensions.Configuration.Json;
6-
using System.Text;
7-
using System.Text.Json;
8-
using System.Text.Json.Nodes;
99

1010
namespace Toolbelt.Blazor.WebAssembly.DevServer.Extensions.UserSecrets;
1111

@@ -65,18 +65,10 @@ private static async Task MergeSecretsIntoAppSettingsResponse(HttpContext contex
6565
var originalResponseBytes = memStream.ToArray();
6666
var responseBody = Encoding.UTF8.GetString(originalResponseBytes);
6767

68-
// Merge JSON in responseBody with secrets JSON
69-
var responseNode = JsonNode.Parse(responseBody);
7068
var secretJsonText = await File.ReadAllTextAsync(secretJsonPath);
71-
var secretNode = JsonNode.Parse(secretJsonText);
7269

73-
var mergedNode = MergeJson(responseNode, secretNode);
74-
var mergedJson = mergedNode is null
75-
? "null"
76-
: mergedNode.ToJsonString(new JsonSerializerOptions
77-
{
78-
WriteIndented = true
79-
});
70+
// Merge JSON in responseBody with secrets JSON
71+
var mergedJson = MergeJsonStrings(responseBody, secretJsonText);
8072

8173
var mergedBytes = Encoding.UTF8.GetBytes(mergedJson);
8274
context.Response.ContentLength = mergedBytes.Length;
@@ -88,6 +80,19 @@ private static void RemoveRequestHeaders(HttpContext context, IEnumerable<string
8880
foreach (var header in headers) context.Request.Headers.Remove(header);
8981
}
9082

83+
internal static string MergeJsonStrings(string baseJson, string overrideJson)
84+
{
85+
var baseNode = JsonNode.Parse(baseJson);
86+
var overrideNode = JsonNode.Parse(overrideJson);
87+
var mergedNode = MergeJson(baseNode, overrideNode);
88+
return mergedNode is null
89+
? "null"
90+
: mergedNode.ToJsonString(new JsonSerializerOptions
91+
{
92+
WriteIndented = true
93+
});
94+
}
95+
9196
private static JsonNode? MergeJson(JsonNode? baseNode, JsonNode? overrideNode)
9297
{
9398
if (overrideNode is null) return null;

0 commit comments

Comments
 (0)