From 5855ba182b87eec245605c96766b1eda9c7f5913 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20=C5=A0krab=C3=A1nek?= Date: Tue, 5 Oct 2021 15:20:33 +0100 Subject: [PATCH 01/21] Added parameter for processing the value of the configuration e.g. for obfuscation --- .../src/ConfigurationRootExtensions.cs | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationRootExtensions.cs b/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationRootExtensions.cs index b6976a734cfa9..768c83218b260 100644 --- a/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationRootExtensions.cs +++ b/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationRootExtensions.cs @@ -1,6 +1,7 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. +using System; using System.Collections.Generic; using System.Linq; using System.Text; @@ -15,8 +16,18 @@ public static class ConfigurationRootExtensions /// /// Generates a human-readable view of the configuration showing where each value came from. /// + /// Configuration root + /// + /// Function for processing the value e.g. hiding secrets + /// Parameters: + /// Key: Key of the current configuration section + /// Path: Full path to the configuration section + /// Value: Value of the configuration section + /// ConfigurationProvider: Provider of the value of the configuration section + /// returns: Value is used to assign as the Value of the configuration section + /// /// The debug view. - public static string GetDebugView(this IConfigurationRoot root) + public static string GetDebugView(this IConfigurationRoot root, Func valueProcessing = null) { void RecurseChildren( StringBuilder stringBuilder, @@ -29,11 +40,15 @@ void RecurseChildren( if (valueAndProvider.Provider != null) { + var value = valueProcessing != null + ? valueProcessing(child.Key, child.Path, valueAndProvider.Value, valueAndProvider.Provider) + : valueAndProvider.Value; + stringBuilder .Append(indent) .Append(child.Key) .Append('=') - .Append(valueAndProvider.Value) + .Append(value) .Append(" (") .Append(valueAndProvider.Provider) .AppendLine(")"); From e971af517b4d86b7abb1e206c450c7d343d373d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20=C5=A0krab=C3=A1nek?= Date: Tue, 5 Oct 2021 15:41:49 +0100 Subject: [PATCH 02/21] Rename --- .../src/ConfigurationRootExtensions.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationRootExtensions.cs b/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationRootExtensions.cs index 768c83218b260..1656bf7ff79c5 100644 --- a/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationRootExtensions.cs +++ b/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationRootExtensions.cs @@ -17,7 +17,7 @@ public static class ConfigurationRootExtensions /// Generates a human-readable view of the configuration showing where each value came from. /// /// Configuration root - /// + /// /// Function for processing the value e.g. hiding secrets /// Parameters: /// Key: Key of the current configuration section @@ -27,7 +27,7 @@ public static class ConfigurationRootExtensions /// returns: Value is used to assign as the Value of the configuration section /// /// The debug view. - public static string GetDebugView(this IConfigurationRoot root, Func valueProcessing = null) + public static string GetDebugView(this IConfigurationRoot root, Func processValue = null) { void RecurseChildren( StringBuilder stringBuilder, @@ -40,8 +40,8 @@ void RecurseChildren( if (valueAndProvider.Provider != null) { - var value = valueProcessing != null - ? valueProcessing(child.Key, child.Path, valueAndProvider.Value, valueAndProvider.Provider) + var value = processValue != null + ? processValue(child.Key, child.Path, valueAndProvider.Value, valueAndProvider.Provider) : valueAndProvider.Value; stringBuilder From 7796decb9388933d6db73cb2d2be93be06340b96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20=C5=A0krab=C3=A1nek?= Date: Wed, 6 Oct 2021 08:42:41 +0100 Subject: [PATCH 03/21] Extension methods separated --- .../src/ConfigurationRootExtensions.cs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationRootExtensions.cs b/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationRootExtensions.cs index 1656bf7ff79c5..bc345ed583860 100644 --- a/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationRootExtensions.cs +++ b/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationRootExtensions.cs @@ -13,6 +13,15 @@ namespace Microsoft.Extensions.Configuration /// public static class ConfigurationRootExtensions { + /// + /// Generates a human-readable view of the configuration showing where each value came from. + /// + /// The debug view. + public static string GetDebugView(this IConfigurationRoot root) + { + return GetDebugView(root, null); + } + /// /// Generates a human-readable view of the configuration showing where each value came from. /// @@ -27,7 +36,7 @@ public static class ConfigurationRootExtensions /// returns: Value is used to assign as the Value of the configuration section /// /// The debug view. - public static string GetDebugView(this IConfigurationRoot root, Func processValue = null) + public static string GetDebugView(this IConfigurationRoot root, Func processValue) { void RecurseChildren( StringBuilder stringBuilder, From 2bfbf3fb28e88dd3bd813e32c4b69aa873613398 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20=C5=A0krab=C3=A1nek?= Date: Thu, 14 Oct 2021 10:41:22 +0100 Subject: [PATCH 04/21] After review suggestion changes --- .../src/ConfigurationDebugViewContext.cs | 24 +++++++++++++++++++ .../src/ConfigurationRootExtensions.cs | 5 ++-- 2 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationDebugViewContext.cs diff --git a/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationDebugViewContext.cs b/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationDebugViewContext.cs new file mode 100644 index 0000000000000..c46b0e070c172 --- /dev/null +++ b/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationDebugViewContext.cs @@ -0,0 +1,24 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +namespace Microsoft.Extensions.Configuration.Abstractions +{ + public readonly struct ConfigurationDebugViewContext + { + public ConfigurationDebugViewContext(string path, string key, string value, IConfigurationProvider configurationProvider) + { + Path = path; + Key = key; + Value = value; + ConfigurationProvider = configurationProvider; + } + + public string Path { get; } + + public string Key { get; } + + public string Value { get; } + + public IConfigurationProvider ConfigurationProvider { get; } + } +} diff --git a/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationRootExtensions.cs b/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationRootExtensions.cs index bc345ed583860..8f5261bb0f0e3 100644 --- a/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationRootExtensions.cs +++ b/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationRootExtensions.cs @@ -5,6 +5,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; +using Microsoft.Extensions.Configuration.Abstractions; namespace Microsoft.Extensions.Configuration { @@ -36,7 +37,7 @@ public static string GetDebugView(this IConfigurationRoot root) /// returns: Value is used to assign as the Value of the configuration section /// /// The debug view. - public static string GetDebugView(this IConfigurationRoot root, Func processValue) + public static string GetDebugView(this IConfigurationRoot root, Func processValue) { void RecurseChildren( StringBuilder stringBuilder, @@ -50,7 +51,7 @@ void RecurseChildren( if (valueAndProvider.Provider != null) { var value = processValue != null - ? processValue(child.Key, child.Path, valueAndProvider.Value, valueAndProvider.Provider) + ? processValue(new ConfigurationDebugViewContext(child.Key, child.Path, valueAndProvider.Value, valueAndProvider.Provider)) : valueAndProvider.Value; stringBuilder From f1414d472d19340dd2bcf759837ccf42b75e0e58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20=C5=A0krab=C3=A1nek?= Date: Thu, 14 Oct 2021 10:43:04 +0100 Subject: [PATCH 05/21] Documentation update --- .../src/ConfigurationRootExtensions.cs | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationRootExtensions.cs b/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationRootExtensions.cs index 8f5261bb0f0e3..38b9845407d9c 100644 --- a/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationRootExtensions.cs +++ b/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationRootExtensions.cs @@ -30,10 +30,7 @@ public static string GetDebugView(this IConfigurationRoot root) /// /// Function for processing the value e.g. hiding secrets /// Parameters: - /// Key: Key of the current configuration section - /// Path: Full path to the configuration section - /// Value: Value of the configuration section - /// ConfigurationProvider: Provider of the value of the configuration section + /// ConfigurationDebugViewContext: Context of the current configuration item /// returns: Value is used to assign as the Value of the configuration section /// /// The debug view. From 25287f05627c2db886a2cd57ed9888f3d2b2c79a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20=C5=A0krab=C3=A1nek?= Date: Sun, 17 Oct 2021 12:03:03 +0100 Subject: [PATCH 06/21] Build fixes --- .../src/ConfigurationRootExtensions.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationRootExtensions.cs b/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationRootExtensions.cs index 38b9845407d9c..b40379c1eaf6f 100644 --- a/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationRootExtensions.cs +++ b/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationRootExtensions.cs @@ -34,7 +34,7 @@ public static string GetDebugView(this IConfigurationRoot root) /// returns: Value is used to assign as the Value of the configuration section /// /// The debug view. - public static string GetDebugView(this IConfigurationRoot root, Func processValue) + public static string GetDebugView(this IConfigurationRoot root, Func? processValue) { void RecurseChildren( StringBuilder stringBuilder, @@ -91,7 +91,7 @@ private static (string Value, IConfigurationProvider Provider) GetValueAndProvid } } - return (null, null); + return ("", null); } } } From 4d61e02eafc7f39fad9b450791f81cef8ec4d002 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20=C5=A0krab=C3=A1nek?= Date: Mon, 18 Oct 2021 12:08:26 +0100 Subject: [PATCH 07/21] Documentation for ConfigurationDebugViewContext added --- .../src/ConfigurationDebugViewContext.cs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationDebugViewContext.cs b/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationDebugViewContext.cs index c46b0e070c172..6e2006534c656 100644 --- a/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationDebugViewContext.cs +++ b/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationDebugViewContext.cs @@ -3,6 +3,9 @@ namespace Microsoft.Extensions.Configuration.Abstractions { + /// + /// Configuration debug view context provides the data about current item of the configuration + /// public readonly struct ConfigurationDebugViewContext { public ConfigurationDebugViewContext(string path, string key, string value, IConfigurationProvider configurationProvider) @@ -13,12 +16,24 @@ public ConfigurationDebugViewContext(string path, string key, string value, ICon ConfigurationProvider = configurationProvider; } + /// + /// Path of the current item + /// public string Path { get; } + /// + /// Key of the current item + /// public string Key { get; } + /// + /// Value of the current item + /// public string Value { get; } + /// + /// Provider used to get the value of the current item + /// public IConfigurationProvider ConfigurationProvider { get; } } } From 80abd2d5b249cfdd293391d76d2b63874170bd84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20=C5=A0krab=C3=A1nek?= Date: Tue, 26 Oct 2021 18:37:47 +0100 Subject: [PATCH 08/21] Nullable string error fix --- .../src/ConfigurationRootExtensions.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationRootExtensions.cs b/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationRootExtensions.cs index b40379c1eaf6f..5ee924be570a5 100644 --- a/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationRootExtensions.cs +++ b/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationRootExtensions.cs @@ -49,7 +49,7 @@ void RecurseChildren( { var value = processValue != null ? processValue(new ConfigurationDebugViewContext(child.Key, child.Path, valueAndProvider.Value, valueAndProvider.Provider)) - : valueAndProvider.Value; + : valueAndProvider.Value!; stringBuilder .Append(indent) From b32aa0b3bd972dbd0f508eae09758072221adeef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20=C5=A0krab=C3=A1nek?= Date: Wed, 27 Oct 2021 08:20:43 +0100 Subject: [PATCH 09/21] Changed to nullable string --- .../src/ConfigurationDebugViewContext.cs | 4 ++-- .../src/ConfigurationRootExtensions.cs | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationDebugViewContext.cs b/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationDebugViewContext.cs index 6e2006534c656..e460f5864ac59 100644 --- a/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationDebugViewContext.cs +++ b/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationDebugViewContext.cs @@ -8,7 +8,7 @@ namespace Microsoft.Extensions.Configuration.Abstractions /// public readonly struct ConfigurationDebugViewContext { - public ConfigurationDebugViewContext(string path, string key, string value, IConfigurationProvider configurationProvider) + public ConfigurationDebugViewContext(string path, string key, string? value, IConfigurationProvider configurationProvider) { Path = path; Key = key; @@ -29,7 +29,7 @@ public ConfigurationDebugViewContext(string path, string key, string value, ICon /// /// Value of the current item /// - public string Value { get; } + public string? Value { get; } /// /// Provider used to get the value of the current item diff --git a/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationRootExtensions.cs b/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationRootExtensions.cs index 5ee924be570a5..ee04ff18e0317 100644 --- a/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationRootExtensions.cs +++ b/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationRootExtensions.cs @@ -47,9 +47,9 @@ void RecurseChildren( if (valueAndProvider.Provider != null) { - var value = processValue != null + string value = processValue != null ? processValue(new ConfigurationDebugViewContext(child.Key, child.Path, valueAndProvider.Value, valueAndProvider.Provider)) - : valueAndProvider.Value!; + : valueAndProvider.Value; stringBuilder .Append(indent) @@ -91,7 +91,7 @@ private static (string Value, IConfigurationProvider Provider) GetValueAndProvid } } - return ("", null); + return (null, null); } } } From 7293bf50b838a43a7698a1e6f627a89f7d2870de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20=C5=A0krab=C3=A1nek?= Date: Wed, 27 Oct 2021 09:33:46 +0100 Subject: [PATCH 10/21] PR fixes --- .../ref/Microsoft.Extensions.Configuration.Abstractions.cs | 6 ++++++ .../src/ConfigurationRootExtensions.cs | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/libraries/Microsoft.Extensions.Configuration.Abstractions/ref/Microsoft.Extensions.Configuration.Abstractions.cs b/src/libraries/Microsoft.Extensions.Configuration.Abstractions/ref/Microsoft.Extensions.Configuration.Abstractions.cs index 6c83ffe225776..0c67375a0230b 100644 --- a/src/libraries/Microsoft.Extensions.Configuration.Abstractions/ref/Microsoft.Extensions.Configuration.Abstractions.cs +++ b/src/libraries/Microsoft.Extensions.Configuration.Abstractions/ref/Microsoft.Extensions.Configuration.Abstractions.cs @@ -4,6 +4,8 @@ // Changes to this file must follow the https://aka.ms/api-review process. // ------------------------------------------------------------------------------ +using System; + namespace Microsoft.Extensions.Configuration { public static partial class ConfigurationExtensions @@ -32,6 +34,10 @@ public static partial class ConfigurationPath public static partial class ConfigurationRootExtensions { public static string GetDebugView(this Microsoft.Extensions.Configuration.IConfigurationRoot root) { throw null; } + public static string GetDebugView(this IConfigurationRoot root, Func? processValue) { throw null; } + } + public readonly partial struct ConfigurationDebugViewContext + { } public partial interface IConfiguration { diff --git a/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationRootExtensions.cs b/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationRootExtensions.cs index ee04ff18e0317..4053fbf0cce79 100644 --- a/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationRootExtensions.cs +++ b/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationRootExtensions.cs @@ -47,7 +47,7 @@ void RecurseChildren( if (valueAndProvider.Provider != null) { - string value = processValue != null + string? value = processValue != null ? processValue(new ConfigurationDebugViewContext(child.Key, child.Path, valueAndProvider.Value, valueAndProvider.Provider)) : valueAndProvider.Value; From 14237790de772182e81320286d8f9c248547ba6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20=C5=A0krab=C3=A1nek?= Date: Wed, 27 Oct 2021 10:42:03 +0100 Subject: [PATCH 11/21] Definition fix --- .../ref/Microsoft.Extensions.Configuration.Abstractions.cs | 4 +--- .../src/ConfigurationDebugViewContext.cs | 2 +- .../src/ConfigurationRootExtensions.cs | 1 - 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/src/libraries/Microsoft.Extensions.Configuration.Abstractions/ref/Microsoft.Extensions.Configuration.Abstractions.cs b/src/libraries/Microsoft.Extensions.Configuration.Abstractions/ref/Microsoft.Extensions.Configuration.Abstractions.cs index 0c67375a0230b..1127198fe597d 100644 --- a/src/libraries/Microsoft.Extensions.Configuration.Abstractions/ref/Microsoft.Extensions.Configuration.Abstractions.cs +++ b/src/libraries/Microsoft.Extensions.Configuration.Abstractions/ref/Microsoft.Extensions.Configuration.Abstractions.cs @@ -4,8 +4,6 @@ // Changes to this file must follow the https://aka.ms/api-review process. // ------------------------------------------------------------------------------ -using System; - namespace Microsoft.Extensions.Configuration { public static partial class ConfigurationExtensions @@ -34,7 +32,7 @@ public static partial class ConfigurationPath public static partial class ConfigurationRootExtensions { public static string GetDebugView(this Microsoft.Extensions.Configuration.IConfigurationRoot root) { throw null; } - public static string GetDebugView(this IConfigurationRoot root, Func? processValue) { throw null; } + public static string GetDebugView(this IConfigurationRoot root, System.Func? processValue) { throw null; } } public readonly partial struct ConfigurationDebugViewContext { diff --git a/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationDebugViewContext.cs b/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationDebugViewContext.cs index e460f5864ac59..c3a54183bff4d 100644 --- a/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationDebugViewContext.cs +++ b/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationDebugViewContext.cs @@ -1,7 +1,7 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -namespace Microsoft.Extensions.Configuration.Abstractions +namespace Microsoft.Extensions.Configuration { /// /// Configuration debug view context provides the data about current item of the configuration diff --git a/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationRootExtensions.cs b/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationRootExtensions.cs index 4053fbf0cce79..9f6bc0a4fa762 100644 --- a/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationRootExtensions.cs +++ b/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationRootExtensions.cs @@ -5,7 +5,6 @@ using System.Collections.Generic; using System.Linq; using System.Text; -using Microsoft.Extensions.Configuration.Abstractions; namespace Microsoft.Extensions.Configuration { From d94a0c968b6be62f466a62b510bba4b1fceadaa1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20=C5=A0krab=C3=A1nek?= Date: Wed, 27 Oct 2021 11:18:30 +0100 Subject: [PATCH 12/21] Missing definition --- .../ref/Microsoft.Extensions.Configuration.Abstractions.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/libraries/Microsoft.Extensions.Configuration.Abstractions/ref/Microsoft.Extensions.Configuration.Abstractions.cs b/src/libraries/Microsoft.Extensions.Configuration.Abstractions/ref/Microsoft.Extensions.Configuration.Abstractions.cs index 1127198fe597d..a65fd67ae6e97 100644 --- a/src/libraries/Microsoft.Extensions.Configuration.Abstractions/ref/Microsoft.Extensions.Configuration.Abstractions.cs +++ b/src/libraries/Microsoft.Extensions.Configuration.Abstractions/ref/Microsoft.Extensions.Configuration.Abstractions.cs @@ -36,6 +36,7 @@ public static partial class ConfigurationRootExtensions } public readonly partial struct ConfigurationDebugViewContext { + public ConfigurationDebugViewContext(string path, string key, string? value, IConfigurationProvider configurationProvider) { throw null; } } public partial interface IConfiguration { From e660d25d45535221f8378ff011861a99fd6cd2fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20=C5=A0krab=C3=A1nek?= Date: Wed, 27 Oct 2021 12:06:05 +0100 Subject: [PATCH 13/21] Added getters to the definition --- .../ref/Microsoft.Extensions.Configuration.Abstractions.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/libraries/Microsoft.Extensions.Configuration.Abstractions/ref/Microsoft.Extensions.Configuration.Abstractions.cs b/src/libraries/Microsoft.Extensions.Configuration.Abstractions/ref/Microsoft.Extensions.Configuration.Abstractions.cs index a65fd67ae6e97..ea95f74ac8736 100644 --- a/src/libraries/Microsoft.Extensions.Configuration.Abstractions/ref/Microsoft.Extensions.Configuration.Abstractions.cs +++ b/src/libraries/Microsoft.Extensions.Configuration.Abstractions/ref/Microsoft.Extensions.Configuration.Abstractions.cs @@ -37,6 +37,10 @@ public static partial class ConfigurationRootExtensions public readonly partial struct ConfigurationDebugViewContext { public ConfigurationDebugViewContext(string path, string key, string? value, IConfigurationProvider configurationProvider) { throw null; } + public string Path { get; } + public string Key { get; } + public string? Value { get; } + public IConfigurationProvider ConfigurationProvider { get; } } public partial interface IConfiguration { From 73f885071bd5f0a698dd471e17b883da7884da59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20=C5=A0krab=C3=A1nek?= Date: Thu, 28 Oct 2021 11:01:01 +0200 Subject: [PATCH 14/21] Update src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationRootExtensions.cs Co-authored-by: Santiago Fernandez Madero --- .../src/ConfigurationRootExtensions.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationRootExtensions.cs b/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationRootExtensions.cs index 9f6bc0a4fa762..c23d3eeebf94d 100644 --- a/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationRootExtensions.cs +++ b/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationRootExtensions.cs @@ -30,7 +30,7 @@ public static string GetDebugView(this IConfigurationRoot root) /// Function for processing the value e.g. hiding secrets /// Parameters: /// ConfigurationDebugViewContext: Context of the current configuration item - /// returns: Value is used to assign as the Value of the configuration section + /// returns: A string value is used to assign as the Value of the configuration section /// /// The debug view. public static string GetDebugView(this IConfigurationRoot root, Func? processValue) From f278f1700dba8159e03995989c8ff488ecd53e11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20=C5=A0krab=C3=A1nek?= Date: Wed, 24 Nov 2021 15:43:57 +0000 Subject: [PATCH 15/21] Tests added --- .../tests/Extensions/ConfigurationRootTest.cs | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/src/libraries/Common/tests/Extensions/ConfigurationRootTest.cs b/src/libraries/Common/tests/Extensions/ConfigurationRootTest.cs index d61144d0e4313..27c505ae4441f 100644 --- a/src/libraries/Common/tests/Extensions/ConfigurationRootTest.cs +++ b/src/libraries/Common/tests/Extensions/ConfigurationRootTest.cs @@ -11,6 +11,8 @@ namespace Microsoft.Extensions.Configuration.Test { public class ConfigurationRootTest { + private const string SecretCover = "*****"; + [Fact] public void RootDisposesProviders() { @@ -76,12 +78,56 @@ public void ChainedConfigurationIsDisposed(bool shouldDispose) Assert.Equal(shouldDispose, provider.IsDisposed); } + [Fact] + public void SecretsAreConcealed() + { + var provider = new SecretConfigurationProvider("secret", "secret-value"); + + var config = new ConfigurationRoot(new IConfigurationProvider[] { + provider + }); + + var debugView = config.GetDebugView(ProcessValue); + + Assert.Contains(SecretCover, debugView); + } + + [Fact] + public void NonSecretsAreNotConcealed() + { + var provider = new TestConfigurationProvider("foo", "foo-value"); + + var config = new ConfigurationRoot(new IConfigurationProvider[] { + provider + }); + + var debugView = config.GetDebugView(ProcessValue); + + Assert.DoesNotContain(SecretCover, debugView); + } + + private string ProcessValue(ConfigurationDebugViewContext context) + { + if (context.ConfigurationProvider.ToString() == nameof(SecretConfigurationProvider)) + { + return SecretCover; + } + + return context.Value; + } + private class TestConfigurationProvider : ConfigurationProvider { public TestConfigurationProvider(string key, string value) => Data.Add(key, value); } + private class SecretConfigurationProvider : ConfigurationProvider + { + public SecretConfigurationProvider(string key, string value) + => Data.Add(key, value); + } + private class DisposableTestConfigurationProvider : ConfigurationProvider, IDisposable { public bool IsDisposed { get; set; } From 8801896dbd8ea39dc5ed135bab7e68b529b7a12e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20=C5=A0krab=C3=A1nek?= Date: Wed, 1 Dec 2021 07:30:36 +0000 Subject: [PATCH 16/21] Update src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationDebugViewContext.cs Docs update Co-authored-by: Eric Erhardt --- .../src/ConfigurationDebugViewContext.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationDebugViewContext.cs b/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationDebugViewContext.cs index c3a54183bff4d..5a7f360a5cf0e 100644 --- a/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationDebugViewContext.cs +++ b/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationDebugViewContext.cs @@ -4,7 +4,7 @@ namespace Microsoft.Extensions.Configuration { /// - /// Configuration debug view context provides the data about current item of the configuration + /// Provides the data about current item of the configuration. /// public readonly struct ConfigurationDebugViewContext { From a8b43410e2425935227bf5f7b14cf76f0d69bb66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20=C5=A0krab=C3=A1nek?= Date: Wed, 1 Dec 2021 07:30:56 +0000 Subject: [PATCH 17/21] Update src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationDebugViewContext.cs Docs updateDocs update Co-authored-by: Eric Erhardt --- .../src/ConfigurationDebugViewContext.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationDebugViewContext.cs b/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationDebugViewContext.cs index 5a7f360a5cf0e..9742b0bc96960 100644 --- a/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationDebugViewContext.cs +++ b/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationDebugViewContext.cs @@ -17,7 +17,7 @@ public ConfigurationDebugViewContext(string path, string key, string? value, ICo } /// - /// Path of the current item + /// Gets the path of the current item. /// public string Path { get; } From 0dbb60acd845cdf5d3e35d21eccc750252632a8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20=C5=A0krab=C3=A1nek?= Date: Wed, 1 Dec 2021 07:31:02 +0000 Subject: [PATCH 18/21] Update src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationDebugViewContext.cs Docs update Co-authored-by: Eric Erhardt --- .../src/ConfigurationDebugViewContext.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationDebugViewContext.cs b/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationDebugViewContext.cs index 9742b0bc96960..0e1a7270aceb7 100644 --- a/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationDebugViewContext.cs +++ b/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationDebugViewContext.cs @@ -22,7 +22,7 @@ public ConfigurationDebugViewContext(string path, string key, string? value, ICo public string Path { get; } /// - /// Key of the current item + /// Gets the key of the current item. /// public string Key { get; } From d2180b811641ced287809c7f40e87dbd452ca93b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20=C5=A0krab=C3=A1nek?= Date: Wed, 1 Dec 2021 07:31:09 +0000 Subject: [PATCH 19/21] Update src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationDebugViewContext.cs Docs update Co-authored-by: Eric Erhardt --- .../src/ConfigurationDebugViewContext.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationDebugViewContext.cs b/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationDebugViewContext.cs index 0e1a7270aceb7..b67f46c8be9ad 100644 --- a/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationDebugViewContext.cs +++ b/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationDebugViewContext.cs @@ -27,7 +27,7 @@ public ConfigurationDebugViewContext(string path, string key, string? value, ICo public string Key { get; } /// - /// Value of the current item + /// Gets the value of the current item. /// public string? Value { get; } From acaa1a0e2991b7fa0436a6df02e4af870421c437 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20=C5=A0krab=C3=A1nek?= Date: Wed, 1 Dec 2021 07:31:17 +0000 Subject: [PATCH 20/21] Update src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationRootExtensions.cs Docs update Co-authored-by: Eric Erhardt --- .../src/ConfigurationRootExtensions.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationRootExtensions.cs b/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationRootExtensions.cs index c23d3eeebf94d..6b677b95c09d2 100644 --- a/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationRootExtensions.cs +++ b/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationRootExtensions.cs @@ -19,7 +19,7 @@ public static class ConfigurationRootExtensions /// The debug view. public static string GetDebugView(this IConfigurationRoot root) { - return GetDebugView(root, null); + return GetDebugView(root, processValue: null); } /// From 79c2868b76e04f1b4f46464925127c13f42426fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20=C5=A0krab=C3=A1nek?= Date: Wed, 1 Dec 2021 07:31:28 +0000 Subject: [PATCH 21/21] Update src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationDebugViewContext.cs Docs update Co-authored-by: Eric Erhardt --- .../src/ConfigurationDebugViewContext.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationDebugViewContext.cs b/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationDebugViewContext.cs index b67f46c8be9ad..ec53db48792b7 100644 --- a/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationDebugViewContext.cs +++ b/src/libraries/Microsoft.Extensions.Configuration.Abstractions/src/ConfigurationDebugViewContext.cs @@ -32,7 +32,7 @@ public ConfigurationDebugViewContext(string path, string key, string? value, ICo public string? Value { get; } /// - /// Provider used to get the value of the current item + /// Gets the that was used to get the value of the current item. /// public IConfigurationProvider ConfigurationProvider { get; } }