diff --git a/dev-proxy-plugins/Reporters/MarkdownReporter.cs b/dev-proxy-plugins/Reporters/MarkdownReporter.cs index 3b13570a..d5c59079 100644 --- a/dev-proxy-plugins/Reporters/MarkdownReporter.cs +++ b/dev-proxy-plugins/Reporters/MarkdownReporter.cs @@ -25,6 +25,7 @@ public class MarkdownReporter(IPluginEvents pluginEvents, IProxyContext context, { typeof(HttpFileGeneratorPlugin), TransformHttpFileGeneratorReport }, { typeof(GraphMinimalPermissionsGuidancePluginReport), TransformGraphMinimalPermissionsGuidanceReport }, { typeof(GraphMinimalPermissionsPluginReport), TransformGraphMinimalPermissionsReport }, + { typeof(MinimalCsomPermissionsPluginReport), TransformMinimalCsomPermissionsReport }, { typeof(MinimalPermissionsPluginReport), TransformMinimalPermissionsReport }, { typeof(OpenApiSpecGeneratorPluginReport), TransformOpenApiSpecGeneratorReport }, { typeof(UrlDiscoveryPluginReport), TransformUrlDiscoveryReport } @@ -577,4 +578,39 @@ void transformPermissionsInfo(GraphMinimalPermissionsInfo permissionsInfo, strin return sb.ToString(); } + + private static string? TransformMinimalCsomPermissionsReport(object report) + { + var minimalPermissionsReport = (MinimalCsomPermissionsPluginReport)report; + + var sb = new StringBuilder(); + sb.AppendLine($"# Minimal CSOM permissions report"); + sb.AppendLine(); + + sb.AppendLine("## Actions"); + sb.AppendLine(); + sb.AppendJoin(Environment.NewLine, minimalPermissionsReport.Actions.Select(a => $"- {a}")); + sb.AppendLine(); + + sb.AppendLine(); + sb.AppendLine("## Minimal permissions"); + sb.AppendLine(); + sb.AppendJoin(Environment.NewLine, minimalPermissionsReport.MinimalPermissions.Select(p => $"- {p}")); + sb.AppendLine(); + + if (minimalPermissionsReport.Errors.Length != 0) + { + sb.AppendLine(); + sb.AppendLine("## 🛑 Errors"); + sb.AppendLine(); + sb.AppendLine("Couldn't determine minimal permissions for the following actions:"); + sb.AppendLine(); + sb.AppendJoin(Environment.NewLine, minimalPermissionsReport.Errors.Select(e => $"- {e}")); + sb.AppendLine(); + } + + sb.AppendLine(); + + return sb.ToString(); + } } \ No newline at end of file diff --git a/dev-proxy-plugins/Reporters/PlainTextReporter.cs b/dev-proxy-plugins/Reporters/PlainTextReporter.cs index 37ba8d78..899b6c58 100644 --- a/dev-proxy-plugins/Reporters/PlainTextReporter.cs +++ b/dev-proxy-plugins/Reporters/PlainTextReporter.cs @@ -25,6 +25,7 @@ public class PlainTextReporter(IPluginEvents pluginEvents, IProxyContext context { typeof(HttpFileGeneratorPluginReport), TransformHttpFileGeneratorReport }, { typeof(GraphMinimalPermissionsGuidancePluginReport), TransformGraphMinimalPermissionsGuidanceReport }, { typeof(GraphMinimalPermissionsPluginReport), TransformGraphMinimalPermissionsReport }, + { typeof(MinimalCsomPermissionsPluginReport), TransformMinimalCsomPermissionsReport }, { typeof(MinimalPermissionsPluginReport), TransformMinimalPermissionsReport }, { typeof(OpenApiSpecGeneratorPluginReport), TransformOpenApiSpecGeneratorReport }, { typeof(UrlDiscoveryPluginReport), TransformUrlDiscoveryReport } @@ -510,4 +511,33 @@ void transformPermissionsInfo(GraphMinimalPermissionsInfo permissionsInfo, strin return sb.ToString(); } + + private static string? TransformMinimalCsomPermissionsReport(object report) + { + var minimalPermissionsReport = (MinimalCsomPermissionsPluginReport)report; + + var sb = new StringBuilder(); + + sb.AppendLine($"Minimal CSOM permissions report"); + sb.AppendLine(); + sb.AppendLine("Actions:"); + sb.AppendLine(); + sb.AppendJoin(Environment.NewLine, minimalPermissionsReport.Actions.Select(a => $"- {a}")); + sb.AppendLine(); + sb.AppendLine(); + sb.AppendLine("Minimal permissions:"); + sb.AppendLine(); + sb.AppendJoin(Environment.NewLine, minimalPermissionsReport.MinimalPermissions.Select(p => $"- {p}")); + + if (minimalPermissionsReport.Errors.Length != 0) + { + sb.AppendLine(); + sb.AppendLine(); + sb.AppendLine("Couldn't determine minimal permissions for the following actions:"); + sb.AppendLine(); + sb.AppendJoin(Environment.NewLine, minimalPermissionsReport.Errors.Select(e => $"- {e}")); + } + + return sb.ToString(); + } } \ No newline at end of file