Skip to content
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions DevProxy.Abstractions/Plugins/BasePlugin.cs
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,15 @@ public TConfiguration Configuration
}
public IConfigurationSection ConfigurationSection { get; } = pluginConfigurationSection;

protected virtual IEnumerable<string>? GetConfigurationValue(string key, IEnumerable<string>? list, IEnumerable<string>? defaultList = default)
{
if (key is null) { return null; }

var keyExists = ConfigurationSection.GetChildren().Any(f => string.Equals(key, f.Key, StringComparison.Ordinal));
list = list?.Where(static p => !string.IsNullOrEmpty(p)).ToArray();
return keyExists ? list ?? [] : defaultList;
}

public virtual void Register(IServiceCollection services, TConfiguration configuration)
{
}
Expand Down
2 changes: 0 additions & 2 deletions DevProxy.Plugins/Extensions/StringExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -67,11 +67,9 @@ internal static string ToCamelCase(this string str)
{
if (string.IsNullOrEmpty(str))
{

return str;
}


return char.ToLowerInvariant(str[0]) + str[1..];
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ public sealed class GraphMinimalPermissionsInfo

public sealed class GraphMinimalPermissionsGuidancePluginConfiguration
{
public IEnumerable<string>? PermissionsToExclude { get; set; }
public IEnumerable<string>? PermissionsToExclude { get; set; } = [];
}

public sealed class GraphMinimalPermissionsGuidancePlugin(
Expand Down Expand Up @@ -61,20 +61,16 @@ public override async Task InitializeAsync(InitArgs e, CancellationToken cancell

_graphUtils = ActivatorUtilities.CreateInstance<GraphUtils>(e.ServiceProvider);

// we need to do it this way because .NET doesn't distinguish between
// an empty array and a null value and we want to be able to tell
// if the user hasn't specified a value and we should use the default
// set or if they have specified an empty array and we shouldn't exclude
// any permissions
if (Configuration.PermissionsToExclude is null)
{
Configuration.PermissionsToExclude = ["profile", "openid", "offline_access", "email"];
}
else
{
// remove empty strings
Configuration.PermissionsToExclude = Configuration.PermissionsToExclude.Where(p => !string.IsNullOrEmpty(p));
}
InitializePermissionsToExclude();
}

private void InitializePermissionsToExclude()
{
var key = nameof(GraphMinimalPermissionsGuidancePluginConfiguration.PermissionsToExclude)
.ToCamelCase();

string[] defaultPermissionsToExclude = ["profile", "openid", "offline_access", "email"];
Configuration.PermissionsToExclude = GetConfigurationValue(key, Configuration.PermissionsToExclude, defaultPermissionsToExclude);
}

public override async Task AfterRecordingStopAsync(RecordingArgs e, CancellationToken cancellationToken)
Expand Down