1+ using System . Text ;
2+ using System . Text . Json ;
3+ using System . Text . Json . Nodes ;
14using Microsoft . AspNetCore . Builder ;
25using Microsoft . AspNetCore . Hosting ;
36using Microsoft . AspNetCore . Http ;
47using Microsoft . Extensions . Configuration ;
58using Microsoft . Extensions . Configuration . Json ;
6- using System . Text ;
7- using System . Text . Json ;
8- using System . Text . Json . Nodes ;
99
1010namespace 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