From f3be3704fc017786fc8a62a742fc2f70549873cd Mon Sep 17 00:00:00 2001 From: Simone Banchieri Date: Tue, 30 Jul 2024 11:40:17 +0200 Subject: [PATCH 1/4] added POLICY_SPECIFICATION_FORMAT parameter (default value rawxml) --- tools/code/common/ApiOperationPolicy.cs | 8 ++--- tools/code/common/ApiPolicy.cs | 8 ++--- tools/code/common/PolicyFragment.cs | 8 ++--- tools/code/common/ProductPolicy.cs | 8 ++--- tools/code/common/ServicePolicy.cs | 8 ++--- tools/code/common/WorkspacePolicy.cs | 8 ++--- tools/code/common/WorkspacePolicyFragment.cs | 8 ++--- tools/code/extractor/ApiOperationPolicy.cs | 4 ++- tools/code/extractor/ApiPolicy.cs | 4 ++- tools/code/extractor/PolicyFragment.cs | 4 ++- tools/code/extractor/PolicySpecification.cs | 36 +++++++++++++++++++ tools/code/extractor/ProductPolicy.cs | 4 ++- tools/code/extractor/ServicePolicy.cs | 4 ++- tools/code/extractor/WorkspacePolicy.cs | 4 ++- .../code/extractor/WorkspacePolicyFragment.cs | 4 ++- 15 files changed, 85 insertions(+), 35 deletions(-) create mode 100644 tools/code/extractor/PolicySpecification.cs diff --git a/tools/code/common/ApiOperationPolicy.cs b/tools/code/common/ApiOperationPolicy.cs index b5c33a5f..10a9eee7 100644 --- a/tools/code/common/ApiOperationPolicy.cs +++ b/tools/code/common/ApiOperationPolicy.cs @@ -107,18 +107,18 @@ public static IAsyncEnumerable ListNames(this ApiOperati .Select(jsonObject => jsonObject.GetStringProperty("name")) .Select(ApiOperationPolicyName.From); - public static IAsyncEnumerable<(ApiOperationPolicyName Name, ApiOperationPolicyDto Dto)> List(this ApiOperationPoliciesUri apioperationPoliciesUri, HttpPipeline pipeline, CancellationToken cancellationToken) => + public static IAsyncEnumerable<(ApiOperationPolicyName Name, ApiOperationPolicyDto Dto)> List(this ApiOperationPoliciesUri apioperationPoliciesUri, HttpPipeline pipeline, CancellationToken cancellationToken, string policyFormat) => apioperationPoliciesUri.ListNames(pipeline, cancellationToken) .SelectAwait(async name => { var uri = new ApiOperationPolicyUri { Parent = apioperationPoliciesUri, Name = name }; - var dto = await uri.GetDto(pipeline, cancellationToken); + var dto = await uri.GetDto(pipeline, cancellationToken, policyFormat); return (name, dto); }); - public static async ValueTask GetDto(this ApiOperationPolicyUri uri, HttpPipeline pipeline, CancellationToken cancellationToken) + public static async ValueTask GetDto(this ApiOperationPolicyUri uri, HttpPipeline pipeline, CancellationToken cancellationToken, string policyFormat) { - var contentUri = uri.ToUri().AppendQueryParam("format", "rawxml").ToUri(); + var contentUri = uri.ToUri().AppendQueryParam("format", policyFormat).ToUri(); var content = await pipeline.GetContent(contentUri, cancellationToken); return content.ToObjectFromJson(); } diff --git a/tools/code/common/ApiPolicy.cs b/tools/code/common/ApiPolicy.cs index b8a69ef5..c513d442 100644 --- a/tools/code/common/ApiPolicy.cs +++ b/tools/code/common/ApiPolicy.cs @@ -106,18 +106,18 @@ public static IAsyncEnumerable ListNames(this ApiPoliciesUri uri, .Select(jsonObject => jsonObject.GetStringProperty("name")) .Select(ApiPolicyName.From); - public static IAsyncEnumerable<(ApiPolicyName Name, ApiPolicyDto Dto)> List(this ApiPoliciesUri apiPoliciesUri, HttpPipeline pipeline, CancellationToken cancellationToken) => + public static IAsyncEnumerable<(ApiPolicyName Name, ApiPolicyDto Dto)> List(this ApiPoliciesUri apiPoliciesUri, HttpPipeline pipeline, CancellationToken cancellationToken, string policyFormat) => apiPoliciesUri.ListNames(pipeline, cancellationToken) .SelectAwait(async name => { var uri = new ApiPolicyUri { Parent = apiPoliciesUri, Name = name }; - var dto = await uri.GetDto(pipeline, cancellationToken); + var dto = await uri.GetDto(pipeline, cancellationToken, policyFormat); return (name, dto); }); - public static async ValueTask GetDto(this ApiPolicyUri uri, HttpPipeline pipeline, CancellationToken cancellationToken) + public static async ValueTask GetDto(this ApiPolicyUri uri, HttpPipeline pipeline, CancellationToken cancellationToken, string policyFormat) { - var contentUri = uri.ToUri().AppendQueryParam("format", "rawxml").ToUri(); + var contentUri = uri.ToUri().AppendQueryParam("format", policyFormat).ToUri(); var content = await pipeline.GetContent(contentUri, cancellationToken); return content.ToObjectFromJson(); } diff --git a/tools/code/common/PolicyFragment.cs b/tools/code/common/PolicyFragment.cs index d96ffb0c..0eae9f97 100644 --- a/tools/code/common/PolicyFragment.cs +++ b/tools/code/common/PolicyFragment.cs @@ -175,18 +175,18 @@ public static IAsyncEnumerable ListNames(this PolicyFragment .Select(jsonObject => jsonObject.GetStringProperty("name")) .Select(PolicyFragmentName.From); - public static IAsyncEnumerable<(PolicyFragmentName Name, PolicyFragmentDto Dto)> List(this PolicyFragmentsUri policyFragmentsUri, HttpPipeline pipeline, CancellationToken cancellationToken) => + public static IAsyncEnumerable<(PolicyFragmentName Name, PolicyFragmentDto Dto)> List(this PolicyFragmentsUri policyFragmentsUri, HttpPipeline pipeline, CancellationToken cancellationToken, string policyFormat) => policyFragmentsUri.ListNames(pipeline, cancellationToken) .SelectAwait(async name => { var uri = new PolicyFragmentUri { Parent = policyFragmentsUri, Name = name }; - var dto = await uri.GetDto(pipeline, cancellationToken); + var dto = await uri.GetDto(pipeline, cancellationToken, policyFormat); return (name, dto); }); - public static async ValueTask GetDto(this PolicyFragmentUri uri, HttpPipeline pipeline, CancellationToken cancellationToken) + public static async ValueTask GetDto(this PolicyFragmentUri uri, HttpPipeline pipeline, CancellationToken cancellationToken, string policyFormat) { - var contentUri = uri.ToUri().AppendQueryParam("format", "rawxml").ToUri(); + var contentUri = uri.ToUri().AppendQueryParam("format", policyFormat).ToUri(); var content = await pipeline.GetContent(contentUri, cancellationToken); return content.ToObjectFromJson(); } diff --git a/tools/code/common/ProductPolicy.cs b/tools/code/common/ProductPolicy.cs index a648970a..50187c01 100644 --- a/tools/code/common/ProductPolicy.cs +++ b/tools/code/common/ProductPolicy.cs @@ -108,18 +108,18 @@ public static IAsyncEnumerable ListNames(this ProductPolicies .Select(jsonObject => jsonObject.GetStringProperty("name")) .Select(ProductPolicyName.From); - public static IAsyncEnumerable<(ProductPolicyName Name, ProductPolicyDto Dto)> List(this ProductPoliciesUri productPoliciesUri, HttpPipeline pipeline, CancellationToken cancellationToken) => + public static IAsyncEnumerable<(ProductPolicyName Name, ProductPolicyDto Dto)> List(this ProductPoliciesUri productPoliciesUri, HttpPipeline pipeline, CancellationToken cancellationToken, string policyFormat) => productPoliciesUri.ListNames(pipeline, cancellationToken) .SelectAwait(async name => { var uri = new ProductPolicyUri { Parent = productPoliciesUri, Name = name }; - var dto = await uri.GetDto(pipeline, cancellationToken); + var dto = await uri.GetDto(pipeline, cancellationToken, policyFormat); return (name, dto); }); - public static async ValueTask GetDto(this ProductPolicyUri uri, HttpPipeline pipeline, CancellationToken cancellationToken) + public static async ValueTask GetDto(this ProductPolicyUri uri, HttpPipeline pipeline, CancellationToken cancellationToken, string policyFormat) { - var contentUri = uri.ToUri().AppendQueryParam("format", "rawxml").ToUri(); + var contentUri = uri.ToUri().AppendQueryParam("format", policyFormat).ToUri(); var content = await pipeline.GetContent(contentUri, cancellationToken); return content.ToObjectFromJson(); } diff --git a/tools/code/common/ServicePolicy.cs b/tools/code/common/ServicePolicy.cs index 3204fbbc..f5f9dc96 100644 --- a/tools/code/common/ServicePolicy.cs +++ b/tools/code/common/ServicePolicy.cs @@ -108,18 +108,18 @@ public static IAsyncEnumerable ListNames(this ServicePolicies .Select(jsonObject => jsonObject.GetStringProperty("name")) .Select(ServicePolicyName.From); - public static IAsyncEnumerable<(ServicePolicyName Name, ServicePolicyDto Dto)> List(this ServicePoliciesUri servicePoliciesUri, HttpPipeline pipeline, CancellationToken cancellationToken) => + public static IAsyncEnumerable<(ServicePolicyName Name, ServicePolicyDto Dto)> List(this ServicePoliciesUri servicePoliciesUri, HttpPipeline pipeline, CancellationToken cancellationToken, string policyFormat) => servicePoliciesUri.ListNames(pipeline, cancellationToken) .SelectAwait(async name => { var uri = new ServicePolicyUri { Parent = servicePoliciesUri, Name = name }; - var dto = await uri.GetDto(pipeline, cancellationToken); + var dto = await uri.GetDto(pipeline, cancellationToken, policyFormat); return (name, dto); }); - public static async ValueTask GetDto(this ServicePolicyUri uri, HttpPipeline pipeline, CancellationToken cancellationToken) + public static async ValueTask GetDto(this ServicePolicyUri uri, HttpPipeline pipeline, CancellationToken cancellationToken, string policyFormat) { - var contentUri = uri.ToUri().AppendQueryParam("format", "rawxml").ToUri(); + var contentUri = uri.ToUri().AppendQueryParam("format", policyFormat).ToUri(); var content = await pipeline.GetContent(contentUri, cancellationToken); return content.ToObjectFromJson(); } diff --git a/tools/code/common/WorkspacePolicy.cs b/tools/code/common/WorkspacePolicy.cs index 87c55875..ccce5377 100644 --- a/tools/code/common/WorkspacePolicy.cs +++ b/tools/code/common/WorkspacePolicy.cs @@ -117,18 +117,18 @@ public static async IAsyncEnumerable ListNames(this Workspa } } - public static IAsyncEnumerable<(WorkspacePolicyName Name, WorkspacePolicyDto Dto)> List(this WorkspacePoliciesUri workspacePoliciesUri, HttpPipeline pipeline, CancellationToken cancellationToken) => + public static IAsyncEnumerable<(WorkspacePolicyName Name, WorkspacePolicyDto Dto)> List(this WorkspacePoliciesUri workspacePoliciesUri, HttpPipeline pipeline, CancellationToken cancellationToken, string policyFormat) => workspacePoliciesUri.ListNames(pipeline, cancellationToken) .SelectAwait(async name => { var uri = new WorkspacePolicyUri { Parent = workspacePoliciesUri, Name = name }; - var dto = await uri.GetDto(pipeline, cancellationToken); + var dto = await uri.GetDto(pipeline, cancellationToken, policyFormat); return (name, dto); }); - public static async ValueTask GetDto(this WorkspacePolicyUri uri, HttpPipeline pipeline, CancellationToken cancellationToken) + public static async ValueTask GetDto(this WorkspacePolicyUri uri, HttpPipeline pipeline, CancellationToken cancellationToken, string policyFormat) { - var contentUri = uri.ToUri().AppendQueryParam("format", "rawxml").ToUri(); + var contentUri = uri.ToUri().AppendQueryParam("format", policyFormat).ToUri(); var content = await pipeline.GetContent(contentUri, cancellationToken); return content.ToObjectFromJson(); } diff --git a/tools/code/common/WorkspacePolicyFragment.cs b/tools/code/common/WorkspacePolicyFragment.cs index a8a73c4c..4d7331b8 100644 --- a/tools/code/common/WorkspacePolicyFragment.cs +++ b/tools/code/common/WorkspacePolicyFragment.cs @@ -164,18 +164,18 @@ public static IAsyncEnumerable ListNames(this WorkspacePolic .Select(jsonObject => jsonObject.GetStringProperty("name")) .Select(PolicyFragmentName.From); - public static IAsyncEnumerable<(PolicyFragmentName Name, WorkspacePolicyFragmentDto Dto)> List(this WorkspacePolicyFragmentsUri workspacePolicyFragmentsUri, HttpPipeline pipeline, CancellationToken cancellationToken) => + public static IAsyncEnumerable<(PolicyFragmentName Name, WorkspacePolicyFragmentDto Dto)> List(this WorkspacePolicyFragmentsUri workspacePolicyFragmentsUri, HttpPipeline pipeline, CancellationToken cancellationToken, string policyFormat) => workspacePolicyFragmentsUri.ListNames(pipeline, cancellationToken) .SelectAwait(async name => { var uri = new WorkspacePolicyFragmentUri { Parent = workspacePolicyFragmentsUri, Name = name }; - var dto = await uri.GetDto(pipeline, cancellationToken); + var dto = await uri.GetDto(pipeline, cancellationToken, policyFormat); return (name, dto); }); - public static async ValueTask GetDto(this WorkspacePolicyFragmentUri uri, HttpPipeline pipeline, CancellationToken cancellationToken) + public static async ValueTask GetDto(this WorkspacePolicyFragmentUri uri, HttpPipeline pipeline, CancellationToken cancellationToken, string policyFormat) { - var contentUri = uri.ToUri().AppendQueryParam("format", "rawxml").ToUri(); + var contentUri = uri.ToUri().AppendQueryParam("format", policyFormat).ToUri(); var content = await pipeline.GetContent(contentUri, cancellationToken); return content.ToObjectFromJson(); } diff --git a/tools/code/extractor/ApiOperationPolicy.cs b/tools/code/extractor/ApiOperationPolicy.cs index 41b19d36..701f9876 100644 --- a/tools/code/extractor/ApiOperationPolicy.cs +++ b/tools/code/extractor/ApiOperationPolicy.cs @@ -50,6 +50,7 @@ private static void ConfigureListApiOperationPolicies(IHostApplicationBuilder bu { AzureModule.ConfigureManagementServiceUri(builder); AzureModule.ConfigureHttpPipeline(builder); + PolicySpecificationModule.ConfigureDefaultPolicySpecification(builder); builder.Services.TryAddSingleton(GetListApiOperationPolicies); } @@ -58,10 +59,11 @@ private static ListApiOperationPolicies GetListApiOperationPolicies(IServiceProv { var serviceUri = provider.GetRequiredService(); var pipeline = provider.GetRequiredService(); + var policySpecificationFormat = provider.GetRequiredService(); return (operationName, apiName, cancellationToken) => ApiOperationPoliciesUri.From(operationName, apiName, serviceUri) - .List(pipeline, cancellationToken); + .List(pipeline, cancellationToken, policySpecificationFormat.PolicyFormat); } private static void ConfigureWriteApiOperationPolicyArtifacts(IHostApplicationBuilder builder) diff --git a/tools/code/extractor/ApiPolicy.cs b/tools/code/extractor/ApiPolicy.cs index e91a17f1..7d382625 100644 --- a/tools/code/extractor/ApiPolicy.cs +++ b/tools/code/extractor/ApiPolicy.cs @@ -50,6 +50,7 @@ private static void ConfigureListApiPolicies(IHostApplicationBuilder builder) { AzureModule.ConfigureManagementServiceUri(builder); AzureModule.ConfigureHttpPipeline(builder); + PolicySpecificationModule.ConfigureDefaultPolicySpecification(builder); builder.Services.TryAddSingleton(GetListApiPolicies); } @@ -58,10 +59,11 @@ private static ListApiPolicies GetListApiPolicies(IServiceProvider provider) { var serviceUri = provider.GetRequiredService(); var pipeline = provider.GetRequiredService(); + var policySpecificationFormat = provider.GetRequiredService(); return (apiName, cancellationToken) => ApiPoliciesUri.From(apiName, serviceUri) - .List(pipeline, cancellationToken); + .List(pipeline, cancellationToken, policySpecificationFormat.PolicyFormat); } private static void ConfigureWriteApiPolicyArtifacts(IHostApplicationBuilder builder) diff --git a/tools/code/extractor/PolicyFragment.cs b/tools/code/extractor/PolicyFragment.cs index 35793de6..d7b6c76c 100644 --- a/tools/code/extractor/PolicyFragment.cs +++ b/tools/code/extractor/PolicyFragment.cs @@ -57,6 +57,7 @@ private static void ConfigureListPolicyFragments(IHostApplicationBuilder builder { AzureModule.ConfigureManagementServiceUri(builder); AzureModule.ConfigureHttpPipeline(builder); + PolicySpecificationModule.ConfigureDefaultPolicySpecification(builder); builder.Services.TryAddSingleton(GetListPolicyFragments); } @@ -65,10 +66,11 @@ private static ListPolicyFragments GetListPolicyFragments(IServiceProvider provi { var serviceUri = provider.GetRequiredService(); var pipeline = provider.GetRequiredService(); + var policySpecificationFormat = provider.GetRequiredService(); return cancellationToken => PolicyFragmentsUri.From(serviceUri) - .List(pipeline, cancellationToken); + .List(pipeline, cancellationToken, policySpecificationFormat.PolicyFormat); } private static void ConfigureShouldExtractPolicyFragment(IHostApplicationBuilder builder) diff --git a/tools/code/extractor/PolicySpecification.cs b/tools/code/extractor/PolicySpecification.cs new file mode 100644 index 00000000..53e23dd2 --- /dev/null +++ b/tools/code/extractor/PolicySpecification.cs @@ -0,0 +1,36 @@ +using common; +using LanguageExt; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.DependencyInjection.Extensions; +using Microsoft.Extensions.Hosting; +using System; + +namespace extractor; + +internal sealed record DefaultPolicySpecification(string PolicyFormat = "rawxml"); + +internal static class PolicySpecificationModule +{ + public static void ConfigureDefaultPolicySpecification(IHostApplicationBuilder builder) + { + builder.Services.TryAddSingleton(GetDefaultPolicySpecification); + } + + private static DefaultPolicySpecification GetDefaultPolicySpecification(IServiceProvider provider) + { + var configuration = provider.GetRequiredService(); + + var formatOption = configuration.TryGetValue("POLICY_SPECIFICATION_FORMAT") + | configuration.TryGetValue("policySpecificationFormat"); + + var specification = formatOption.Map(format => format switch + { + var value when "RAWXML".Equals(value, StringComparison.OrdinalIgnoreCase) => new DefaultPolicySpecification("rawxml"), + var value when "XML".Equals(value, StringComparison.OrdinalIgnoreCase) => new DefaultPolicySpecification("xml"), + var value => throw new NotSupportedException($"Policy specification format '{value}' defined in configuration is not supported.") + }).IfNone(() => new DefaultPolicySpecification("rawxml")); + + return specification; + } +} diff --git a/tools/code/extractor/ProductPolicy.cs b/tools/code/extractor/ProductPolicy.cs index 3a24fbc6..dfac30c2 100644 --- a/tools/code/extractor/ProductPolicy.cs +++ b/tools/code/extractor/ProductPolicy.cs @@ -50,6 +50,7 @@ private static void ConfigureListProductPolicies(IHostApplicationBuilder builder { AzureModule.ConfigureManagementServiceUri(builder); AzureModule.ConfigureHttpPipeline(builder); + PolicySpecificationModule.ConfigureDefaultPolicySpecification(builder); builder.Services.TryAddSingleton(GetListProductPolicies); } @@ -58,10 +59,11 @@ private static ListProductPolicies GetListProductPolicies(IServiceProvider provi { var serviceUri = provider.GetRequiredService(); var pipeline = provider.GetRequiredService(); + var policySpecificationFormat = provider.GetRequiredService(); return (productName, cancellationToken) => ProductPoliciesUri.From(productName, serviceUri) - .List(pipeline, cancellationToken); + .List(pipeline, cancellationToken, policySpecificationFormat.PolicyFormat); } private static void ConfigureWriteProductPolicyArtifacts(IHostApplicationBuilder builder) diff --git a/tools/code/extractor/ServicePolicy.cs b/tools/code/extractor/ServicePolicy.cs index 2979498a..e779a468 100644 --- a/tools/code/extractor/ServicePolicy.cs +++ b/tools/code/extractor/ServicePolicy.cs @@ -50,6 +50,7 @@ private static void ConfigureListServicePolicies(IHostApplicationBuilder builder { AzureModule.ConfigureManagementServiceUri(builder); AzureModule.ConfigureHttpPipeline(builder); + PolicySpecificationModule.ConfigureDefaultPolicySpecification(builder); builder.Services.TryAddSingleton(GetListServicePolicies); } @@ -58,10 +59,11 @@ private static ListServicePolicies GetListServicePolicies(IServiceProvider provi { var serviceUri = provider.GetRequiredService(); var pipeline = provider.GetRequiredService(); + var policySpecificationFormat = provider.GetRequiredService(); return cancellationToken => ServicePoliciesUri.From(serviceUri) - .List(pipeline, cancellationToken); + .List(pipeline, cancellationToken, policySpecificationFormat.PolicyFormat); } private static void ConfigureWriteServicePolicyArtifacts(IHostApplicationBuilder builder) diff --git a/tools/code/extractor/WorkspacePolicy.cs b/tools/code/extractor/WorkspacePolicy.cs index dead982e..a881f4aa 100644 --- a/tools/code/extractor/WorkspacePolicy.cs +++ b/tools/code/extractor/WorkspacePolicy.cs @@ -50,6 +50,7 @@ private static void ConfigureListWorkspacePolicies(IHostApplicationBuilder build { AzureModule.ConfigureManagementServiceUri(builder); AzureModule.ConfigureHttpPipeline(builder); + PolicySpecificationModule.ConfigureDefaultPolicySpecification(builder); builder.Services.TryAddSingleton(GetListWorkspacePolicies); } @@ -58,10 +59,11 @@ private static ListWorkspacePolicies GetListWorkspacePolicies(IServiceProvider p { var serviceUri = provider.GetRequiredService(); var pipeline = provider.GetRequiredService(); + var policySpecificationFormat = provider.GetRequiredService(); return (workspaceName, cancellationToken) => WorkspacePoliciesUri.From(workspaceName, serviceUri) - .List(pipeline, cancellationToken); + .List(pipeline, cancellationToken, policySpecificationFormat.PolicyFormat); } private static void ConfigureWriteWorkspacePolicyArtifacts(IHostApplicationBuilder builder) diff --git a/tools/code/extractor/WorkspacePolicyFragment.cs b/tools/code/extractor/WorkspacePolicyFragment.cs index 1c28939d..c70d3d8f 100644 --- a/tools/code/extractor/WorkspacePolicyFragment.cs +++ b/tools/code/extractor/WorkspacePolicyFragment.cs @@ -52,6 +52,7 @@ private static void ConfigureListWorkspacePolicyFragments(IHostApplicationBuilde { AzureModule.ConfigureManagementServiceUri(builder); AzureModule.ConfigureHttpPipeline(builder); + PolicySpecificationModule.ConfigureDefaultPolicySpecification(builder); builder.Services.TryAddSingleton(GetListWorkspacePolicyFragments); } @@ -60,10 +61,11 @@ private static ListWorkspacePolicyFragments GetListWorkspacePolicyFragments(ISer { var serviceUri = provider.GetRequiredService(); var pipeline = provider.GetRequiredService(); + var policySpecificationFormat = provider.GetRequiredService(); return (workspaceName, cancellationToken) => WorkspacePolicyFragmentsUri.From(workspaceName, serviceUri) - .List(pipeline, cancellationToken); + .List(pipeline, cancellationToken, policySpecificationFormat.PolicyFormat); } private static void ConfigureWriteWorkspacePolicyFragmentArtifacts(IHostApplicationBuilder builder) From 5ca69c3d7fd701416d4ccd01785670379812cebd Mon Sep 17 00:00:00 2001 From: Simone Banchieri Date: Tue, 30 Jul 2024 16:28:36 +0200 Subject: [PATCH 2/4] remaned policy specification to policy content format, moved to common --- tools/code/common/ApiOperationPolicy.cs | 8 ++--- tools/code/common/ApiPolicy.cs | 8 ++--- tools/code/common/PolicyContentFormat.cs | 33 +++++++++++++++++++ tools/code/common/PolicyFragment.cs | 8 ++--- tools/code/common/ProductPolicy.cs | 8 ++--- tools/code/common/ServicePolicy.cs | 8 ++--- tools/code/common/WorkspacePolicy.cs | 8 ++--- tools/code/common/WorkspacePolicyFragment.cs | 8 ++--- tools/code/extractor/ApiOperationPolicy.cs | 6 ++-- tools/code/extractor/ApiPolicy.cs | 6 ++-- tools/code/extractor/PolicyFragment.cs | 6 ++-- tools/code/extractor/PolicySpecification.cs | 22 ++++++------- tools/code/extractor/ProductPolicy.cs | 6 ++-- tools/code/extractor/ServicePolicy.cs | 6 ++-- tools/code/extractor/WorkspacePolicy.cs | 6 ++-- .../code/extractor/WorkspacePolicyFragment.cs | 6 ++-- 16 files changed, 92 insertions(+), 61 deletions(-) create mode 100644 tools/code/common/PolicyContentFormat.cs diff --git a/tools/code/common/ApiOperationPolicy.cs b/tools/code/common/ApiOperationPolicy.cs index 10a9eee7..ecb8c006 100644 --- a/tools/code/common/ApiOperationPolicy.cs +++ b/tools/code/common/ApiOperationPolicy.cs @@ -107,18 +107,18 @@ public static IAsyncEnumerable ListNames(this ApiOperati .Select(jsonObject => jsonObject.GetStringProperty("name")) .Select(ApiOperationPolicyName.From); - public static IAsyncEnumerable<(ApiOperationPolicyName Name, ApiOperationPolicyDto Dto)> List(this ApiOperationPoliciesUri apioperationPoliciesUri, HttpPipeline pipeline, CancellationToken cancellationToken, string policyFormat) => + public static IAsyncEnumerable<(ApiOperationPolicyName Name, ApiOperationPolicyDto Dto)> List(this ApiOperationPoliciesUri apioperationPoliciesUri, HttpPipeline pipeline, CancellationToken cancellationToken, PolicyContentFormat policyContentFormat) => apioperationPoliciesUri.ListNames(pipeline, cancellationToken) .SelectAwait(async name => { var uri = new ApiOperationPolicyUri { Parent = apioperationPoliciesUri, Name = name }; - var dto = await uri.GetDto(pipeline, cancellationToken, policyFormat); + var dto = await uri.GetDto(pipeline, cancellationToken, policyContentFormat); return (name, dto); }); - public static async ValueTask GetDto(this ApiOperationPolicyUri uri, HttpPipeline pipeline, CancellationToken cancellationToken, string policyFormat) + public static async ValueTask GetDto(this ApiOperationPolicyUri uri, HttpPipeline pipeline, CancellationToken cancellationToken, PolicyContentFormat policyContentFormat) { - var contentUri = uri.ToUri().AppendQueryParam("format", policyFormat).ToUri(); + var contentUri = uri.ToUri().AppendQueryParam("format", policyContentFormat.GetPolicyContentFormat).ToUri(); var content = await pipeline.GetContent(contentUri, cancellationToken); return content.ToObjectFromJson(); } diff --git a/tools/code/common/ApiPolicy.cs b/tools/code/common/ApiPolicy.cs index c513d442..8df50aaa 100644 --- a/tools/code/common/ApiPolicy.cs +++ b/tools/code/common/ApiPolicy.cs @@ -106,18 +106,18 @@ public static IAsyncEnumerable ListNames(this ApiPoliciesUri uri, .Select(jsonObject => jsonObject.GetStringProperty("name")) .Select(ApiPolicyName.From); - public static IAsyncEnumerable<(ApiPolicyName Name, ApiPolicyDto Dto)> List(this ApiPoliciesUri apiPoliciesUri, HttpPipeline pipeline, CancellationToken cancellationToken, string policyFormat) => + public static IAsyncEnumerable<(ApiPolicyName Name, ApiPolicyDto Dto)> List(this ApiPoliciesUri apiPoliciesUri, HttpPipeline pipeline, CancellationToken cancellationToken, PolicyContentFormat policyContentFormat) => apiPoliciesUri.ListNames(pipeline, cancellationToken) .SelectAwait(async name => { var uri = new ApiPolicyUri { Parent = apiPoliciesUri, Name = name }; - var dto = await uri.GetDto(pipeline, cancellationToken, policyFormat); + var dto = await uri.GetDto(pipeline, cancellationToken, policyContentFormat); return (name, dto); }); - public static async ValueTask GetDto(this ApiPolicyUri uri, HttpPipeline pipeline, CancellationToken cancellationToken, string policyFormat) + public static async ValueTask GetDto(this ApiPolicyUri uri, HttpPipeline pipeline, CancellationToken cancellationToken, PolicyContentFormat policyContentFormat) { - var contentUri = uri.ToUri().AppendQueryParam("format", policyFormat).ToUri(); + var contentUri = uri.ToUri().AppendQueryParam("format", policyContentFormat.GetPolicyContentFormat).ToUri(); var content = await pipeline.GetContent(contentUri, cancellationToken); return content.ToObjectFromJson(); } diff --git a/tools/code/common/PolicyContentFormat.cs b/tools/code/common/PolicyContentFormat.cs new file mode 100644 index 00000000..25169728 --- /dev/null +++ b/tools/code/common/PolicyContentFormat.cs @@ -0,0 +1,33 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace common +{ + public abstract record PolicyContentFormat + { + + public sealed record RawXml : PolicyContentFormat; + public sealed record Xml : PolicyContentFormat; + public sealed record RawXmlLink : PolicyContentFormat; + public sealed record XmlLink : PolicyContentFormat; + + + public string GetPolicyContentFormat + { + get + { + return this switch + { + PolicyContentFormat.RawXml => "rawxml", + PolicyContentFormat.Xml => "xml", + PolicyContentFormat.RawXmlLink => "rawxml-link", + PolicyContentFormat.XmlLink => "xml-link", + _ => throw new NotSupportedException() + }; + } + } + } +} diff --git a/tools/code/common/PolicyFragment.cs b/tools/code/common/PolicyFragment.cs index 0eae9f97..78dfa377 100644 --- a/tools/code/common/PolicyFragment.cs +++ b/tools/code/common/PolicyFragment.cs @@ -175,18 +175,18 @@ public static IAsyncEnumerable ListNames(this PolicyFragment .Select(jsonObject => jsonObject.GetStringProperty("name")) .Select(PolicyFragmentName.From); - public static IAsyncEnumerable<(PolicyFragmentName Name, PolicyFragmentDto Dto)> List(this PolicyFragmentsUri policyFragmentsUri, HttpPipeline pipeline, CancellationToken cancellationToken, string policyFormat) => + public static IAsyncEnumerable<(PolicyFragmentName Name, PolicyFragmentDto Dto)> List(this PolicyFragmentsUri policyFragmentsUri, HttpPipeline pipeline, CancellationToken cancellationToken, PolicyContentFormat policyContentFormat) => policyFragmentsUri.ListNames(pipeline, cancellationToken) .SelectAwait(async name => { var uri = new PolicyFragmentUri { Parent = policyFragmentsUri, Name = name }; - var dto = await uri.GetDto(pipeline, cancellationToken, policyFormat); + var dto = await uri.GetDto(pipeline, cancellationToken, policyContentFormat); return (name, dto); }); - public static async ValueTask GetDto(this PolicyFragmentUri uri, HttpPipeline pipeline, CancellationToken cancellationToken, string policyFormat) + public static async ValueTask GetDto(this PolicyFragmentUri uri, HttpPipeline pipeline, CancellationToken cancellationToken, PolicyContentFormat policyContentFormat) { - var contentUri = uri.ToUri().AppendQueryParam("format", policyFormat).ToUri(); + var contentUri = uri.ToUri().AppendQueryParam("format", policyContentFormat.GetPolicyContentFormat).ToUri(); var content = await pipeline.GetContent(contentUri, cancellationToken); return content.ToObjectFromJson(); } diff --git a/tools/code/common/ProductPolicy.cs b/tools/code/common/ProductPolicy.cs index 50187c01..ba41de33 100644 --- a/tools/code/common/ProductPolicy.cs +++ b/tools/code/common/ProductPolicy.cs @@ -108,18 +108,18 @@ public static IAsyncEnumerable ListNames(this ProductPolicies .Select(jsonObject => jsonObject.GetStringProperty("name")) .Select(ProductPolicyName.From); - public static IAsyncEnumerable<(ProductPolicyName Name, ProductPolicyDto Dto)> List(this ProductPoliciesUri productPoliciesUri, HttpPipeline pipeline, CancellationToken cancellationToken, string policyFormat) => + public static IAsyncEnumerable<(ProductPolicyName Name, ProductPolicyDto Dto)> List(this ProductPoliciesUri productPoliciesUri, HttpPipeline pipeline, CancellationToken cancellationToken, PolicyContentFormat policyContentFormat) => productPoliciesUri.ListNames(pipeline, cancellationToken) .SelectAwait(async name => { var uri = new ProductPolicyUri { Parent = productPoliciesUri, Name = name }; - var dto = await uri.GetDto(pipeline, cancellationToken, policyFormat); + var dto = await uri.GetDto(pipeline, cancellationToken, policyContentFormat); return (name, dto); }); - public static async ValueTask GetDto(this ProductPolicyUri uri, HttpPipeline pipeline, CancellationToken cancellationToken, string policyFormat) + public static async ValueTask GetDto(this ProductPolicyUri uri, HttpPipeline pipeline, CancellationToken cancellationToken, PolicyContentFormat policyContentFormat) { - var contentUri = uri.ToUri().AppendQueryParam("format", policyFormat).ToUri(); + var contentUri = uri.ToUri().AppendQueryParam("format", policyContentFormat.GetPolicyContentFormat).ToUri(); var content = await pipeline.GetContent(contentUri, cancellationToken); return content.ToObjectFromJson(); } diff --git a/tools/code/common/ServicePolicy.cs b/tools/code/common/ServicePolicy.cs index f5f9dc96..b6d0a09a 100644 --- a/tools/code/common/ServicePolicy.cs +++ b/tools/code/common/ServicePolicy.cs @@ -108,18 +108,18 @@ public static IAsyncEnumerable ListNames(this ServicePolicies .Select(jsonObject => jsonObject.GetStringProperty("name")) .Select(ServicePolicyName.From); - public static IAsyncEnumerable<(ServicePolicyName Name, ServicePolicyDto Dto)> List(this ServicePoliciesUri servicePoliciesUri, HttpPipeline pipeline, CancellationToken cancellationToken, string policyFormat) => + public static IAsyncEnumerable<(ServicePolicyName Name, ServicePolicyDto Dto)> List(this ServicePoliciesUri servicePoliciesUri, HttpPipeline pipeline, CancellationToken cancellationToken, PolicyContentFormat policyContentFormat) => servicePoliciesUri.ListNames(pipeline, cancellationToken) .SelectAwait(async name => { var uri = new ServicePolicyUri { Parent = servicePoliciesUri, Name = name }; - var dto = await uri.GetDto(pipeline, cancellationToken, policyFormat); + var dto = await uri.GetDto(pipeline, cancellationToken, policyContentFormat); return (name, dto); }); - public static async ValueTask GetDto(this ServicePolicyUri uri, HttpPipeline pipeline, CancellationToken cancellationToken, string policyFormat) + public static async ValueTask GetDto(this ServicePolicyUri uri, HttpPipeline pipeline, CancellationToken cancellationToken, PolicyContentFormat policyContentFormat) { - var contentUri = uri.ToUri().AppendQueryParam("format", policyFormat).ToUri(); + var contentUri = uri.ToUri().AppendQueryParam("format", policyContentFormat.GetPolicyContentFormat).ToUri(); var content = await pipeline.GetContent(contentUri, cancellationToken); return content.ToObjectFromJson(); } diff --git a/tools/code/common/WorkspacePolicy.cs b/tools/code/common/WorkspacePolicy.cs index ccce5377..e2bdfc0c 100644 --- a/tools/code/common/WorkspacePolicy.cs +++ b/tools/code/common/WorkspacePolicy.cs @@ -117,18 +117,18 @@ public static async IAsyncEnumerable ListNames(this Workspa } } - public static IAsyncEnumerable<(WorkspacePolicyName Name, WorkspacePolicyDto Dto)> List(this WorkspacePoliciesUri workspacePoliciesUri, HttpPipeline pipeline, CancellationToken cancellationToken, string policyFormat) => + public static IAsyncEnumerable<(WorkspacePolicyName Name, WorkspacePolicyDto Dto)> List(this WorkspacePoliciesUri workspacePoliciesUri, HttpPipeline pipeline, CancellationToken cancellationToken, PolicyContentFormat policyContentFormat) => workspacePoliciesUri.ListNames(pipeline, cancellationToken) .SelectAwait(async name => { var uri = new WorkspacePolicyUri { Parent = workspacePoliciesUri, Name = name }; - var dto = await uri.GetDto(pipeline, cancellationToken, policyFormat); + var dto = await uri.GetDto(pipeline, cancellationToken, policyContentFormat); return (name, dto); }); - public static async ValueTask GetDto(this WorkspacePolicyUri uri, HttpPipeline pipeline, CancellationToken cancellationToken, string policyFormat) + public static async ValueTask GetDto(this WorkspacePolicyUri uri, HttpPipeline pipeline, CancellationToken cancellationToken, PolicyContentFormat policyContentFormat) { - var contentUri = uri.ToUri().AppendQueryParam("format", policyFormat).ToUri(); + var contentUri = uri.ToUri().AppendQueryParam("format", policyContentFormat.GetPolicyContentFormat).ToUri(); var content = await pipeline.GetContent(contentUri, cancellationToken); return content.ToObjectFromJson(); } diff --git a/tools/code/common/WorkspacePolicyFragment.cs b/tools/code/common/WorkspacePolicyFragment.cs index 4d7331b8..d6cee826 100644 --- a/tools/code/common/WorkspacePolicyFragment.cs +++ b/tools/code/common/WorkspacePolicyFragment.cs @@ -164,18 +164,18 @@ public static IAsyncEnumerable ListNames(this WorkspacePolic .Select(jsonObject => jsonObject.GetStringProperty("name")) .Select(PolicyFragmentName.From); - public static IAsyncEnumerable<(PolicyFragmentName Name, WorkspacePolicyFragmentDto Dto)> List(this WorkspacePolicyFragmentsUri workspacePolicyFragmentsUri, HttpPipeline pipeline, CancellationToken cancellationToken, string policyFormat) => + public static IAsyncEnumerable<(PolicyFragmentName Name, WorkspacePolicyFragmentDto Dto)> List(this WorkspacePolicyFragmentsUri workspacePolicyFragmentsUri, HttpPipeline pipeline, CancellationToken cancellationToken, PolicyContentFormat policyContentFormat) => workspacePolicyFragmentsUri.ListNames(pipeline, cancellationToken) .SelectAwait(async name => { var uri = new WorkspacePolicyFragmentUri { Parent = workspacePolicyFragmentsUri, Name = name }; - var dto = await uri.GetDto(pipeline, cancellationToken, policyFormat); + var dto = await uri.GetDto(pipeline, cancellationToken, policyContentFormat); return (name, dto); }); - public static async ValueTask GetDto(this WorkspacePolicyFragmentUri uri, HttpPipeline pipeline, CancellationToken cancellationToken, string policyFormat) + public static async ValueTask GetDto(this WorkspacePolicyFragmentUri uri, HttpPipeline pipeline, CancellationToken cancellationToken, PolicyContentFormat policyContentFormat) { - var contentUri = uri.ToUri().AppendQueryParam("format", policyFormat).ToUri(); + var contentUri = uri.ToUri().AppendQueryParam("format", policyContentFormat.GetPolicyContentFormat).ToUri(); var content = await pipeline.GetContent(contentUri, cancellationToken); return content.ToObjectFromJson(); } diff --git a/tools/code/extractor/ApiOperationPolicy.cs b/tools/code/extractor/ApiOperationPolicy.cs index 701f9876..a707343c 100644 --- a/tools/code/extractor/ApiOperationPolicy.cs +++ b/tools/code/extractor/ApiOperationPolicy.cs @@ -50,7 +50,7 @@ private static void ConfigureListApiOperationPolicies(IHostApplicationBuilder bu { AzureModule.ConfigureManagementServiceUri(builder); AzureModule.ConfigureHttpPipeline(builder); - PolicySpecificationModule.ConfigureDefaultPolicySpecification(builder); + PolicyContentFormatModule.ConfigureDefaultPolicyContentFormat(builder); builder.Services.TryAddSingleton(GetListApiOperationPolicies); } @@ -59,11 +59,11 @@ private static ListApiOperationPolicies GetListApiOperationPolicies(IServiceProv { var serviceUri = provider.GetRequiredService(); var pipeline = provider.GetRequiredService(); - var policySpecificationFormat = provider.GetRequiredService(); + var policyContentFormat = provider.GetRequiredService(); return (operationName, apiName, cancellationToken) => ApiOperationPoliciesUri.From(operationName, apiName, serviceUri) - .List(pipeline, cancellationToken, policySpecificationFormat.PolicyFormat); + .List(pipeline, cancellationToken, policyContentFormat); } private static void ConfigureWriteApiOperationPolicyArtifacts(IHostApplicationBuilder builder) diff --git a/tools/code/extractor/ApiPolicy.cs b/tools/code/extractor/ApiPolicy.cs index 7d382625..30e9e6dd 100644 --- a/tools/code/extractor/ApiPolicy.cs +++ b/tools/code/extractor/ApiPolicy.cs @@ -50,7 +50,7 @@ private static void ConfigureListApiPolicies(IHostApplicationBuilder builder) { AzureModule.ConfigureManagementServiceUri(builder); AzureModule.ConfigureHttpPipeline(builder); - PolicySpecificationModule.ConfigureDefaultPolicySpecification(builder); + PolicyContentFormatModule.ConfigureDefaultPolicyContentFormat(builder); builder.Services.TryAddSingleton(GetListApiPolicies); } @@ -59,11 +59,11 @@ private static ListApiPolicies GetListApiPolicies(IServiceProvider provider) { var serviceUri = provider.GetRequiredService(); var pipeline = provider.GetRequiredService(); - var policySpecificationFormat = provider.GetRequiredService(); + var policyContentFormat = provider.GetRequiredService(); return (apiName, cancellationToken) => ApiPoliciesUri.From(apiName, serviceUri) - .List(pipeline, cancellationToken, policySpecificationFormat.PolicyFormat); + .List(pipeline, cancellationToken, policyContentFormat); } private static void ConfigureWriteApiPolicyArtifacts(IHostApplicationBuilder builder) diff --git a/tools/code/extractor/PolicyFragment.cs b/tools/code/extractor/PolicyFragment.cs index d7b6c76c..1190af63 100644 --- a/tools/code/extractor/PolicyFragment.cs +++ b/tools/code/extractor/PolicyFragment.cs @@ -57,7 +57,7 @@ private static void ConfigureListPolicyFragments(IHostApplicationBuilder builder { AzureModule.ConfigureManagementServiceUri(builder); AzureModule.ConfigureHttpPipeline(builder); - PolicySpecificationModule.ConfigureDefaultPolicySpecification(builder); + PolicyContentFormatModule.ConfigureDefaultPolicyContentFormat(builder); builder.Services.TryAddSingleton(GetListPolicyFragments); } @@ -66,11 +66,11 @@ private static ListPolicyFragments GetListPolicyFragments(IServiceProvider provi { var serviceUri = provider.GetRequiredService(); var pipeline = provider.GetRequiredService(); - var policySpecificationFormat = provider.GetRequiredService(); + var policyContentFormat = provider.GetRequiredService(); return cancellationToken => PolicyFragmentsUri.From(serviceUri) - .List(pipeline, cancellationToken, policySpecificationFormat.PolicyFormat); + .List(pipeline, cancellationToken, policyContentFormat); } private static void ConfigureShouldExtractPolicyFragment(IHostApplicationBuilder builder) diff --git a/tools/code/extractor/PolicySpecification.cs b/tools/code/extractor/PolicySpecification.cs index 53e23dd2..736e0f77 100644 --- a/tools/code/extractor/PolicySpecification.cs +++ b/tools/code/extractor/PolicySpecification.cs @@ -8,28 +8,26 @@ namespace extractor; -internal sealed record DefaultPolicySpecification(string PolicyFormat = "rawxml"); - -internal static class PolicySpecificationModule +internal static class PolicyContentFormatModule { - public static void ConfigureDefaultPolicySpecification(IHostApplicationBuilder builder) + public static void ConfigureDefaultPolicyContentFormat(IHostApplicationBuilder builder) { - builder.Services.TryAddSingleton(GetDefaultPolicySpecification); + builder.Services.TryAddSingleton(GetDefaultPolicyContentFormat); } - private static DefaultPolicySpecification GetDefaultPolicySpecification(IServiceProvider provider) + private static PolicyContentFormat GetDefaultPolicyContentFormat(IServiceProvider provider) { var configuration = provider.GetRequiredService(); - var formatOption = configuration.TryGetValue("POLICY_SPECIFICATION_FORMAT") - | configuration.TryGetValue("policySpecificationFormat"); + var formatOption = configuration.TryGetValue("POLICY_CONTENT_FORMAT") + | configuration.TryGetValue("policyContentFormat"); var specification = formatOption.Map(format => format switch { - var value when "RAWXML".Equals(value, StringComparison.OrdinalIgnoreCase) => new DefaultPolicySpecification("rawxml"), - var value when "XML".Equals(value, StringComparison.OrdinalIgnoreCase) => new DefaultPolicySpecification("xml"), - var value => throw new NotSupportedException($"Policy specification format '{value}' defined in configuration is not supported.") - }).IfNone(() => new DefaultPolicySpecification("rawxml")); + var value when "RAWXML".Equals(value, StringComparison.OrdinalIgnoreCase) => new PolicyContentFormat.RawXml() as PolicyContentFormat, + var value when "XML".Equals(value, StringComparison.OrdinalIgnoreCase) => new PolicyContentFormat.Xml(), + var value => throw new NotSupportedException($"Policy content format '{value}' defined in configuration is not supported.") + }).IfNone(() => new PolicyContentFormat.RawXml()); return specification; } diff --git a/tools/code/extractor/ProductPolicy.cs b/tools/code/extractor/ProductPolicy.cs index dfac30c2..97e54d24 100644 --- a/tools/code/extractor/ProductPolicy.cs +++ b/tools/code/extractor/ProductPolicy.cs @@ -50,7 +50,7 @@ private static void ConfigureListProductPolicies(IHostApplicationBuilder builder { AzureModule.ConfigureManagementServiceUri(builder); AzureModule.ConfigureHttpPipeline(builder); - PolicySpecificationModule.ConfigureDefaultPolicySpecification(builder); + PolicyContentFormatModule.ConfigureDefaultPolicyContentFormat(builder); builder.Services.TryAddSingleton(GetListProductPolicies); } @@ -59,11 +59,11 @@ private static ListProductPolicies GetListProductPolicies(IServiceProvider provi { var serviceUri = provider.GetRequiredService(); var pipeline = provider.GetRequiredService(); - var policySpecificationFormat = provider.GetRequiredService(); + var policyContentFormat = provider.GetRequiredService(); return (productName, cancellationToken) => ProductPoliciesUri.From(productName, serviceUri) - .List(pipeline, cancellationToken, policySpecificationFormat.PolicyFormat); + .List(pipeline, cancellationToken, policyContentFormat); } private static void ConfigureWriteProductPolicyArtifacts(IHostApplicationBuilder builder) diff --git a/tools/code/extractor/ServicePolicy.cs b/tools/code/extractor/ServicePolicy.cs index e779a468..5d6c4fc0 100644 --- a/tools/code/extractor/ServicePolicy.cs +++ b/tools/code/extractor/ServicePolicy.cs @@ -50,7 +50,7 @@ private static void ConfigureListServicePolicies(IHostApplicationBuilder builder { AzureModule.ConfigureManagementServiceUri(builder); AzureModule.ConfigureHttpPipeline(builder); - PolicySpecificationModule.ConfigureDefaultPolicySpecification(builder); + PolicyContentFormatModule.ConfigureDefaultPolicyContentFormat(builder); builder.Services.TryAddSingleton(GetListServicePolicies); } @@ -59,11 +59,11 @@ private static ListServicePolicies GetListServicePolicies(IServiceProvider provi { var serviceUri = provider.GetRequiredService(); var pipeline = provider.GetRequiredService(); - var policySpecificationFormat = provider.GetRequiredService(); + var policyContentFormat = provider.GetRequiredService(); return cancellationToken => ServicePoliciesUri.From(serviceUri) - .List(pipeline, cancellationToken, policySpecificationFormat.PolicyFormat); + .List(pipeline, cancellationToken, policyContentFormat); } private static void ConfigureWriteServicePolicyArtifacts(IHostApplicationBuilder builder) diff --git a/tools/code/extractor/WorkspacePolicy.cs b/tools/code/extractor/WorkspacePolicy.cs index a881f4aa..5a758830 100644 --- a/tools/code/extractor/WorkspacePolicy.cs +++ b/tools/code/extractor/WorkspacePolicy.cs @@ -50,7 +50,7 @@ private static void ConfigureListWorkspacePolicies(IHostApplicationBuilder build { AzureModule.ConfigureManagementServiceUri(builder); AzureModule.ConfigureHttpPipeline(builder); - PolicySpecificationModule.ConfigureDefaultPolicySpecification(builder); + PolicyContentFormatModule.ConfigureDefaultPolicyContentFormat(builder); builder.Services.TryAddSingleton(GetListWorkspacePolicies); } @@ -59,11 +59,11 @@ private static ListWorkspacePolicies GetListWorkspacePolicies(IServiceProvider p { var serviceUri = provider.GetRequiredService(); var pipeline = provider.GetRequiredService(); - var policySpecificationFormat = provider.GetRequiredService(); + var policyContentFormat = provider.GetRequiredService(); return (workspaceName, cancellationToken) => WorkspacePoliciesUri.From(workspaceName, serviceUri) - .List(pipeline, cancellationToken, policySpecificationFormat.PolicyFormat); + .List(pipeline, cancellationToken, policyContentFormat); } private static void ConfigureWriteWorkspacePolicyArtifacts(IHostApplicationBuilder builder) diff --git a/tools/code/extractor/WorkspacePolicyFragment.cs b/tools/code/extractor/WorkspacePolicyFragment.cs index c70d3d8f..8195f442 100644 --- a/tools/code/extractor/WorkspacePolicyFragment.cs +++ b/tools/code/extractor/WorkspacePolicyFragment.cs @@ -52,7 +52,7 @@ private static void ConfigureListWorkspacePolicyFragments(IHostApplicationBuilde { AzureModule.ConfigureManagementServiceUri(builder); AzureModule.ConfigureHttpPipeline(builder); - PolicySpecificationModule.ConfigureDefaultPolicySpecification(builder); + PolicyContentFormatModule.ConfigureDefaultPolicyContentFormat(builder); builder.Services.TryAddSingleton(GetListWorkspacePolicyFragments); } @@ -61,11 +61,11 @@ private static ListWorkspacePolicyFragments GetListWorkspacePolicyFragments(ISer { var serviceUri = provider.GetRequiredService(); var pipeline = provider.GetRequiredService(); - var policySpecificationFormat = provider.GetRequiredService(); + var policyContentFormat = provider.GetRequiredService(); return (workspaceName, cancellationToken) => WorkspacePolicyFragmentsUri.From(workspaceName, serviceUri) - .List(pipeline, cancellationToken, policySpecificationFormat.PolicyFormat); + .List(pipeline, cancellationToken, policyContentFormat); } private static void ConfigureWriteWorkspacePolicyFragmentArtifacts(IHostApplicationBuilder builder) From 93c9411ef828e971ba39b9c1defa9cbf77baec42 Mon Sep 17 00:00:00 2001 From: Simone Banchieri Date: Tue, 30 Jul 2024 16:33:53 +0200 Subject: [PATCH 3/4] renamed policy specification file to consitent class name --- .../{PolicySpecification.cs => PolicyContentFormatModule.cs} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename tools/code/extractor/{PolicySpecification.cs => PolicyContentFormatModule.cs} (100%) diff --git a/tools/code/extractor/PolicySpecification.cs b/tools/code/extractor/PolicyContentFormatModule.cs similarity index 100% rename from tools/code/extractor/PolicySpecification.cs rename to tools/code/extractor/PolicyContentFormatModule.cs From 609e02e4359fe60c752602465febdcef6d44095e Mon Sep 17 00:00:00 2001 From: Simone Banchieri Date: Thu, 1 Aug 2024 17:04:49 +0200 Subject: [PATCH 4/4] completed parameter POLICY_CONTENT_FORMAT with XML and RAWXML parameter --- tools/code/common/ApiOperationPolicy.cs | 3 +- tools/code/common/ApiPolicy.cs | 3 +- tools/code/common/PolicyContentFormat.cs | 3 ++ .../PolicyContentFormatModule.cs | 34 +++++++++++++++++-- tools/code/common/PolicyFragment.cs | 3 +- tools/code/common/ProductPolicy.cs | 3 +- tools/code/common/ServicePolicy.cs | 6 ++-- tools/code/common/WorkspacePolicy.cs | 4 ++- tools/code/common/WorkspacePolicyFragment.cs | 4 ++- tools/code/extractor/PolicyFragment.cs | 1 + .../code/extractor/WorkspacePolicyFragment.cs | 1 + tools/code/integration.tests/ApiPolicy.cs | 10 +++--- .../code/integration.tests/PolicyFragment.cs | 10 +++--- tools/code/integration.tests/ProductPolicy.cs | 10 +++--- tools/code/integration.tests/ServicePolicy.cs | 15 ++++---- tools/code/publisher/ApiOperationPolicy.cs | 3 +- tools/code/publisher/ApiPolicy.cs | 3 +- tools/code/publisher/App.cs | 1 + tools/code/publisher/PolicyFragment.cs | 3 +- tools/code/publisher/ProductPolicy.cs | 3 +- tools/code/publisher/ServicePolicy.cs | 3 +- tools/code/publisher/WorkspacePolicy.cs | 3 +- .../code/publisher/WorkspacePolicyFragment.cs | 5 +-- 23 files changed, 97 insertions(+), 37 deletions(-) rename tools/code/{extractor => common}/PolicyContentFormatModule.cs (54%) diff --git a/tools/code/common/ApiOperationPolicy.cs b/tools/code/common/ApiOperationPolicy.cs index ecb8c006..d83e7175 100644 --- a/tools/code/common/ApiOperationPolicy.cs +++ b/tools/code/common/ApiOperationPolicy.cs @@ -129,7 +129,8 @@ public static async ValueTask Delete(this ApiOperationPolicyUri uri, HttpPipelin public static async ValueTask PutDto(this ApiOperationPolicyUri uri, ApiOperationPolicyDto dto, HttpPipeline pipeline, CancellationToken cancellationToken) { var content = BinaryData.FromObjectAsJson(dto); - await pipeline.PutContent(uri.ToUri(), content, cancellationToken); + var contentUri = string.IsNullOrEmpty(dto.Properties.Format) ? uri.ToUri() : uri.ToUri().AppendQueryParam("format", dto.Properties.Format).ToUri(); + await pipeline.PutContent(contentUri, content, cancellationToken); } public static async ValueTask WritePolicy(this ApiOperationPolicyFile file, string policy, CancellationToken cancellationToken) diff --git a/tools/code/common/ApiPolicy.cs b/tools/code/common/ApiPolicy.cs index 8df50aaa..2a73bd91 100644 --- a/tools/code/common/ApiPolicy.cs +++ b/tools/code/common/ApiPolicy.cs @@ -135,7 +135,8 @@ public static async ValueTask Delete(this ApiPolicyUri uri, HttpPipeline pipelin public static async ValueTask PutDto(this ApiPolicyUri uri, ApiPolicyDto dto, HttpPipeline pipeline, CancellationToken cancellationToken) { var content = BinaryData.FromObjectAsJson(dto); - await pipeline.PutContent(uri.ToUri(), content, cancellationToken); + var contentUri = string.IsNullOrEmpty(dto.Properties.Format) ? uri.ToUri() : uri.ToUri().AppendQueryParam("format", dto.Properties.Format).ToUri(); + await pipeline.PutContent(contentUri, content, cancellationToken); } public static IEnumerable ListPolicyFiles(ApiName apiName, ManagementServiceDirectory serviceDirectory) diff --git a/tools/code/common/PolicyContentFormat.cs b/tools/code/common/PolicyContentFormat.cs index 25169728..933c3e15 100644 --- a/tools/code/common/PolicyContentFormat.cs +++ b/tools/code/common/PolicyContentFormat.cs @@ -8,6 +8,9 @@ namespace common { public abstract record PolicyContentFormat { + private static readonly Lazy instance = new Lazy(() => new RawXml()); + + public static PolicyContentFormat Default => instance.Value; public sealed record RawXml : PolicyContentFormat; public sealed record Xml : PolicyContentFormat; diff --git a/tools/code/extractor/PolicyContentFormatModule.cs b/tools/code/common/PolicyContentFormatModule.cs similarity index 54% rename from tools/code/extractor/PolicyContentFormatModule.cs rename to tools/code/common/PolicyContentFormatModule.cs index 736e0f77..63395abb 100644 --- a/tools/code/extractor/PolicyContentFormatModule.cs +++ b/tools/code/common/PolicyContentFormatModule.cs @@ -5,10 +5,13 @@ using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.Hosting; using System; +using System.Globalization; +using System.Text.Json.Serialization; +using System.Text.Json; -namespace extractor; +namespace common; -internal static class PolicyContentFormatModule +public static class PolicyContentFormatModule { public static void ConfigureDefaultPolicyContentFormat(IHostApplicationBuilder builder) { @@ -32,3 +35,30 @@ private static PolicyContentFormat GetDefaultPolicyContentFormat(IServiceProvide return specification; } } + +//public class PolicyContentFormatJsonConverter : JsonConverter +//{ +// public override PolicyContentFormat Read( +// ref Utf8JsonReader reader, +// Type typeToConvert, +// JsonSerializerOptions options) +// { +// return reader.GetString() switch +// { +// "rawxml" => new PolicyContentFormat.RawXml(), +// "xml" => new PolicyContentFormat.Xml(), +// "rawxml-link" => new PolicyContentFormat.RawXmlLink(), +// "xml-link" => new PolicyContentFormat.XmlLink(), +// _ => throw new NotSupportedException() +// }; +// } + +// public override void Write( +// Utf8JsonWriter writer, +// PolicyContentFormat value, +// JsonSerializerOptions options) +// { +// // switch on PolicyContentFormat to determine the string to render +// writer.WriteStringValue(value.GetPolicyContentFormat); +// } +//} diff --git a/tools/code/common/PolicyFragment.cs b/tools/code/common/PolicyFragment.cs index 78dfa377..4dd8ed3a 100644 --- a/tools/code/common/PolicyFragment.cs +++ b/tools/code/common/PolicyFragment.cs @@ -197,7 +197,8 @@ public static async ValueTask Delete(this PolicyFragmentUri uri, HttpPipeline pi public static async ValueTask PutDto(this PolicyFragmentUri uri, PolicyFragmentDto dto, HttpPipeline pipeline, CancellationToken cancellationToken) { var content = BinaryData.FromObjectAsJson(dto); - await pipeline.PutContent(uri.ToUri(), content, cancellationToken); + var contentUri = string.IsNullOrEmpty(dto.Properties.Format) ? uri.ToUri() : uri.ToUri().AppendQueryParam("format", dto.Properties.Format).ToUri(); + await pipeline.PutContent(contentUri, content, cancellationToken); } public static IEnumerable ListDirectories(ManagementServiceDirectory serviceDirectory) diff --git a/tools/code/common/ProductPolicy.cs b/tools/code/common/ProductPolicy.cs index ba41de33..124ab628 100644 --- a/tools/code/common/ProductPolicy.cs +++ b/tools/code/common/ProductPolicy.cs @@ -130,7 +130,8 @@ public static async ValueTask Delete(this ProductPolicyUri uri, HttpPipeline pip public static async ValueTask PutDto(this ProductPolicyUri uri, ProductPolicyDto dto, HttpPipeline pipeline, CancellationToken cancellationToken) { var content = BinaryData.FromObjectAsJson(dto); - await pipeline.PutContent(uri.ToUri(), content, cancellationToken); + var contentUri = string.IsNullOrEmpty(dto.Properties.Format) ? uri.ToUri() : uri.ToUri().AppendQueryParam("format", dto.Properties.Format).ToUri(); + await pipeline.PutContent(contentUri, content, cancellationToken); } public static IEnumerable ListPolicyFiles(ProductName productName, ManagementServiceDirectory serviceDirectory) diff --git a/tools/code/common/ServicePolicy.cs b/tools/code/common/ServicePolicy.cs index b6d0a09a..d7a9ab9f 100644 --- a/tools/code/common/ServicePolicy.cs +++ b/tools/code/common/ServicePolicy.cs @@ -3,6 +3,7 @@ using LanguageExt; using System; using System.Collections.Generic; +using System.ComponentModel; using System.IO; using System.Linq; using System.Net; @@ -87,7 +88,7 @@ public sealed record ServicePolicyContract [JsonPropertyName("format")] [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)] - public string? Format { get; init; } + public string? Format { get ; init ; } [JsonPropertyName("value")] [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)] @@ -130,7 +131,8 @@ public static async ValueTask Delete(this ServicePolicyUri uri, HttpPipeline pip public static async ValueTask PutDto(this ServicePolicyUri uri, ServicePolicyDto dto, HttpPipeline pipeline, CancellationToken cancellationToken) { var content = BinaryData.FromObjectAsJson(dto); - await pipeline.PutContent(uri.ToUri(), content, cancellationToken); + var contentUri = string.IsNullOrEmpty(dto.Properties.Format) ? uri.ToUri() : uri.ToUri().AppendQueryParam("format", dto.Properties.Format).ToUri(); + await pipeline.PutContent(contentUri, content, cancellationToken); } public static IEnumerable ListPolicyFiles(ManagementServiceDirectory serviceDirectory) => diff --git a/tools/code/common/WorkspacePolicy.cs b/tools/code/common/WorkspacePolicy.cs index e2bdfc0c..8629b74a 100644 --- a/tools/code/common/WorkspacePolicy.cs +++ b/tools/code/common/WorkspacePolicy.cs @@ -1,6 +1,7 @@ using Azure.Core.Pipeline; using Flurl; using LanguageExt; +using Microsoft.AspNetCore.Http; using System; using System.Collections.Generic; using System.IO; @@ -139,7 +140,8 @@ public static async ValueTask Delete(this WorkspacePolicyUri uri, HttpPipeline p public static async ValueTask PutDto(this WorkspacePolicyUri uri, WorkspacePolicyDto dto, HttpPipeline pipeline, CancellationToken cancellationToken) { var content = BinaryData.FromObjectAsJson(dto); - await pipeline.PutContent(uri.ToUri(), content, cancellationToken); + var contentUri = string.IsNullOrEmpty(dto.Properties.Format) ? uri.ToUri() : uri.ToUri().AppendQueryParam("format", dto.Properties.Format).ToUri(); + await pipeline.PutContent(contentUri, content, cancellationToken); } public static IEnumerable ListPolicyFiles(WorkspaceName workspaceName, ManagementServiceDirectory serviceDirectory) diff --git a/tools/code/common/WorkspacePolicyFragment.cs b/tools/code/common/WorkspacePolicyFragment.cs index d6cee826..bf9ce942 100644 --- a/tools/code/common/WorkspacePolicyFragment.cs +++ b/tools/code/common/WorkspacePolicyFragment.cs @@ -1,6 +1,7 @@ using Azure.Core.Pipeline; using Flurl; using LanguageExt; +using Microsoft.AspNetCore.Http; using System; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; @@ -186,7 +187,8 @@ public static async ValueTask Delete(this WorkspacePolicyFragmentUri uri, HttpPi public static async ValueTask PutDto(this WorkspacePolicyFragmentUri uri, WorkspacePolicyFragmentDto dto, HttpPipeline pipeline, CancellationToken cancellationToken) { var content = BinaryData.FromObjectAsJson(dto); - await pipeline.PutContent(uri.ToUri(), content, cancellationToken); + var contentUri = string.IsNullOrEmpty(dto.Properties.Format) ? uri.ToUri() : uri.ToUri().AppendQueryParam("format", dto.Properties.Format).ToUri(); + await pipeline.PutContent(contentUri, content, cancellationToken); } public static async ValueTask WriteDto(this WorkspacePolicyFragmentInformationFile file, WorkspacePolicyFragmentDto dto, CancellationToken cancellationToken) diff --git a/tools/code/extractor/PolicyFragment.cs b/tools/code/extractor/PolicyFragment.cs index 1190af63..d1639fdd 100644 --- a/tools/code/extractor/PolicyFragment.cs +++ b/tools/code/extractor/PolicyFragment.cs @@ -120,6 +120,7 @@ private static WritePolicyFragmentInformationFile GetWritePolicyFragmentInformat { var serviceDirectory = provider.GetRequiredService(); var logger = provider.GetRequiredService(); + var policyContentFormat = provider.GetRequiredService(); return async (name, dto, cancellationToken) => { diff --git a/tools/code/extractor/WorkspacePolicyFragment.cs b/tools/code/extractor/WorkspacePolicyFragment.cs index 8195f442..3023bfa0 100644 --- a/tools/code/extractor/WorkspacePolicyFragment.cs +++ b/tools/code/extractor/WorkspacePolicyFragment.cs @@ -99,6 +99,7 @@ private static WriteWorkspacePolicyFragmentInformationFile GetWriteWorkspacePoli { var serviceDirectory = provider.GetRequiredService(); var logger = provider.GetRequiredService(); + var policyContentFormat = provider.GetRequiredService(); return async (name, dto, workspaceName, cancellationToken) => { diff --git a/tools/code/integration.tests/ApiPolicy.cs b/tools/code/integration.tests/ApiPolicy.cs index 3a7c36fc..0958a783 100644 --- a/tools/code/integration.tests/ApiPolicy.cs +++ b/tools/code/integration.tests/ApiPolicy.cs @@ -28,7 +28,7 @@ private static ApiPolicyDto GetDto(ApiPolicyModel model) => { Properties = new ApiPolicyDto.ApiPolicyContract { - Format = "rawxml", + Format = PolicyContentFormat.Default.GetPolicyContentFormat, Value = model.Content } }; @@ -74,7 +74,7 @@ private static async ValueTask> Ge { var uri = ApiPoliciesUri.From(apiName, serviceUri); - return await uri.List(pipeline, cancellationToken) + return await uri.List(pipeline, cancellationToken, new PolicyContentFormat.RawXml()) .ToFrozenDictionary(cancellationToken); } @@ -86,7 +86,8 @@ await common.ApiPolicyModule.ListPolicyFiles(apiName, serviceDirectory) { Properties = new ApiPolicyDto.ApiPolicyContract { - Value = await file.ReadPolicy(cancellationToken) + Value = await file.ReadPolicy(cancellationToken), + Format = PolicyContentFormat.Default.GetPolicyContentFormat } })) .ToFrozenDictionary(cancellationToken); @@ -143,7 +144,8 @@ await Git.GetExistingFilesInCommit(serviceDirectory.ToDirectoryInfo(), commitId) { Properties = new ApiPolicyDto.ApiPolicyContract { - Value = data.ToString() + Value = data.ToString(), + Format = PolicyContentFormat.Default.GetPolicyContentFormat } }; return (name, dto); diff --git a/tools/code/integration.tests/PolicyFragment.cs b/tools/code/integration.tests/PolicyFragment.cs index 2cfeb90a..1013bc49 100644 --- a/tools/code/integration.tests/PolicyFragment.cs +++ b/tools/code/integration.tests/PolicyFragment.cs @@ -101,7 +101,7 @@ static PolicyFragmentDto getDto(PolicyFragmentModel model) => Properties = new PolicyFragmentDto.PolicyFragmentContract { Description = model.Description.ValueUnsafe(), - Format = "rawxml", + Format = PolicyContentFormat.Default.GetPolicyContentFormat, Value = model.Content } }; @@ -173,7 +173,7 @@ private static GetApimPolicyFragments GetGetApimPolicyFragments(IServiceProvider var serviceUri = getServiceUri(serviceName); return await PolicyFragmentsUri.From(serviceUri) - .List(pipeline, cancellationToken) + .List(pipeline, cancellationToken, new PolicyContentFormat.RawXml()) .ToFrozenDictionary(cancellationToken); }; } @@ -274,7 +274,7 @@ static PolicyFragmentDto getDto(PolicyFragmentModel model) => Properties = new PolicyFragmentDto.PolicyFragmentContract { Description = model.Description.ValueUnsafe(), - Format = "rawxml", + Format = PolicyContentFormat.Default.GetPolicyContentFormat, Value = model.Content } }; @@ -344,7 +344,7 @@ from content in PolicyFragmentModel.GenerateContent() Properties = new PolicyFragmentDto.PolicyFragmentContract { Description = description.ValueUnsafe(), - Format = "rawxml", + Format = PolicyContentFormat.Default.GetPolicyContentFormat, Value = content } }; @@ -358,7 +358,7 @@ private static PolicyFragmentDto GetDto(PolicyFragmentModel model) => Properties = new PolicyFragmentDto.PolicyFragmentContract { Description = model.Description.ValueUnsafe(), - Format = "rawxml", + Format = PolicyContentFormat.Default.GetPolicyContentFormat, Value = model.Content } }; diff --git a/tools/code/integration.tests/ProductPolicy.cs b/tools/code/integration.tests/ProductPolicy.cs index 97cc3d19..ed147875 100644 --- a/tools/code/integration.tests/ProductPolicy.cs +++ b/tools/code/integration.tests/ProductPolicy.cs @@ -28,7 +28,7 @@ private static ProductPolicyDto GetDto(ProductPolicyModel model) => { Properties = new ProductPolicyDto.ProductPolicyContract { - Format = "rawxml", + Format = PolicyContentFormat.Default.GetPolicyContentFormat, Value = model.Content } }; @@ -74,7 +74,7 @@ private static async ValueTask { Properties = new ServicePolicyDto.ServicePolicyContract { - Format = "rawxml", + Format = PolicyContentFormat.Default.GetPolicyContentFormat, Value = model.Content } }; @@ -174,7 +174,7 @@ private static GetApimServicePolicies GetGetApimServicePolicies(IServiceProvider var serviceUri = getServiceUri(serviceName); return await ServicePoliciesUri.From(serviceUri) - .List(pipeline, cancellationToken) + .List(pipeline, cancellationToken, new PolicyContentFormat.RawXml()) .ToFrozenDictionary(cancellationToken); }; } @@ -224,7 +224,8 @@ async ValueTask> getWithCo { Properties = new ServicePolicyDto.ServicePolicyContract { - Value = data.ToString() + Value = data.ToString(), + Format = PolicyContentFormat.Default.GetPolicyContentFormat } }; return (name, dto); @@ -243,7 +244,8 @@ async ValueTask> getWithou { Properties = new ServicePolicyDto.ServicePolicyContract { - Value = await file.ReadPolicy(cancellationToken) + Value = await file.ReadPolicy(cancellationToken), + Format = PolicyContentFormat.Default.GetPolicyContentFormat, } })) .ToFrozenDictionary(cancellationToken); @@ -336,7 +338,8 @@ from content in ServicePolicyModel.GenerateContent() { Properties = new ServicePolicyDto.ServicePolicyContract { - Value = content + Value = content, + Format = PolicyContentFormat.Default.GetPolicyContentFormat } }; @@ -348,7 +351,7 @@ private static ServicePolicyDto GetDto(ServicePolicyModel model) => { Properties = new ServicePolicyDto.ServicePolicyContract { - Format = "rawxml", + Format = PolicyContentFormat.Default.GetPolicyContentFormat, Value = model.Content } }; diff --git a/tools/code/publisher/ApiOperationPolicy.cs b/tools/code/publisher/ApiOperationPolicy.cs index 3e8b7291..93a31aac 100644 --- a/tools/code/publisher/ApiOperationPolicy.cs +++ b/tools/code/publisher/ApiOperationPolicy.cs @@ -136,6 +136,7 @@ private static FindApiOperationPolicyDto GetFindApiOperationPolicyDto(IServicePr { var serviceDirectory = provider.GetRequiredService(); var tryGetFileContents = provider.GetRequiredService(); + var policyContentFormat = provider.GetRequiredService(); return async (name, operationName, apiName, cancellationToken) => { @@ -146,7 +147,7 @@ private static FindApiOperationPolicyDto GetFindApiOperationPolicyDto(IServicePr { Properties = new ApiOperationPolicyDto.ApiOperationPolicyContract { - Format = "rawxml", + Format = policyContentFormat.GetPolicyContentFormat, Value = contents.ToString() } }; diff --git a/tools/code/publisher/ApiPolicy.cs b/tools/code/publisher/ApiPolicy.cs index 1a029560..4d1da20c 100644 --- a/tools/code/publisher/ApiPolicy.cs +++ b/tools/code/publisher/ApiPolicy.cs @@ -135,6 +135,7 @@ private static FindApiPolicyDto GetFindApiPolicyDto(IServiceProvider provider) { var serviceDirectory = provider.GetRequiredService(); var tryGetFileContents = provider.GetRequiredService(); + var policyContentFormat = provider.GetRequiredService(); return async (name, apiName, cancellationToken) => { @@ -145,7 +146,7 @@ private static FindApiPolicyDto GetFindApiPolicyDto(IServiceProvider provider) { Properties = new ApiPolicyDto.ApiPolicyContract { - Format = "rawxml", + Format = policyContentFormat.GetPolicyContentFormat, Value = contents.ToString() } }; diff --git a/tools/code/publisher/App.cs b/tools/code/publisher/App.cs index 3d15d876..4492fd2d 100644 --- a/tools/code/publisher/App.cs +++ b/tools/code/publisher/App.cs @@ -13,6 +13,7 @@ internal static class AppModule { public static void ConfigureRunApplication(IHostApplicationBuilder builder) { + PolicyContentFormatModule.ConfigureDefaultPolicyContentFormat(builder); NamedValueModule.ConfigurePutNamedValues(builder); GatewayModule.ConfigurePutGateways(builder); BackendModule.ConfigurePutBackends(builder); diff --git a/tools/code/publisher/PolicyFragment.cs b/tools/code/publisher/PolicyFragment.cs index 51be0100..267ab6ec 100644 --- a/tools/code/publisher/PolicyFragment.cs +++ b/tools/code/publisher/PolicyFragment.cs @@ -153,6 +153,7 @@ private static FindPolicyFragmentDto GetFindPolicyFragmentDto(IServiceProvider p var serviceDirectory = provider.GetRequiredService(); var tryGetFileContents = provider.GetRequiredService(); var overrideFactory = provider.GetRequiredService(); + var policyContentFormat = provider.GetRequiredService(); var overrideDto = overrideFactory.Create(); @@ -192,7 +193,7 @@ Option tryGetDto(PolicyFragmentName name, Option(); var tryGetFileContents = provider.GetRequiredService(); + var policyContentFormat = provider.GetRequiredService(); return async (name, productName, cancellationToken) => { @@ -145,7 +146,7 @@ private static FindProductPolicyDto GetFindProductPolicyDto(IServiceProvider pro { Properties = new ProductPolicyDto.ProductPolicyContract { - Format = "rawxml", + Format = policyContentFormat.GetPolicyContentFormat, Value = contents.ToString() } }; diff --git a/tools/code/publisher/ServicePolicy.cs b/tools/code/publisher/ServicePolicy.cs index a5e251f7..af25dda1 100644 --- a/tools/code/publisher/ServicePolicy.cs +++ b/tools/code/publisher/ServicePolicy.cs @@ -136,6 +136,7 @@ private static FindServicePolicyDto GetFindServicePolicyDto(IServiceProvider pro var serviceDirectory = provider.GetRequiredService(); var tryGetFileContents = provider.GetRequiredService(); var overrideFactory = provider.GetRequiredService(); + var policyContentFormat = provider.GetRequiredService(); var overrideDto = overrideFactory.Create(); @@ -148,7 +149,7 @@ private static FindServicePolicyDto GetFindServicePolicyDto(IServiceProvider pro { Properties = new ServicePolicyDto.ServicePolicyContract { - Format = "rawxml", + Format = policyContentFormat.GetPolicyContentFormat, Value = contents.ToString() } } diff --git a/tools/code/publisher/WorkspacePolicy.cs b/tools/code/publisher/WorkspacePolicy.cs index 5e996397..6513fc10 100644 --- a/tools/code/publisher/WorkspacePolicy.cs +++ b/tools/code/publisher/WorkspacePolicy.cs @@ -135,6 +135,7 @@ private static FindWorkspacePolicyDto GetFindWorkspacePolicyDto(IServiceProvider { var serviceDirectory = provider.GetRequiredService(); var tryGetFileContents = provider.GetRequiredService(); + var policyContentFormat = provider.GetRequiredService(); return async (name, workspaceName, cancellationToken) => { @@ -145,7 +146,7 @@ private static FindWorkspacePolicyDto GetFindWorkspacePolicyDto(IServiceProvider { Properties = new WorkspacePolicyDto.WorkspacePolicyContract { - Format = "rawxml", + Format = policyContentFormat.GetPolicyContentFormat, Value = contents.ToString() } }; diff --git a/tools/code/publisher/WorkspacePolicyFragment.cs b/tools/code/publisher/WorkspacePolicyFragment.cs index a1115e2a..4f15abc1 100644 --- a/tools/code/publisher/WorkspacePolicyFragment.cs +++ b/tools/code/publisher/WorkspacePolicyFragment.cs @@ -152,6 +152,7 @@ private static FindWorkspacePolicyFragmentDto GetFindWorkspacePolicyFragmentDto( { var serviceDirectory = provider.GetRequiredService(); var tryGetFileContents = provider.GetRequiredService(); + var policyContentFormat = provider.GetRequiredService(); return async (name, workspaceName, cancellationToken) => { @@ -184,12 +185,12 @@ Option tryGetDto(Option return Option.None; } - var dto = informationFileDtoOption.IfNone(() => new WorkspacePolicyFragmentDto { Properties = new WorkspacePolicyFragmentDto.PolicyFragmentContract() }); + var dto = informationFileDtoOption.IfNone(() => new WorkspacePolicyFragmentDto { Properties = new WorkspacePolicyFragmentDto.PolicyFragmentContract() }); policyContentsOption.Iter(contents => dto = dto with { Properties = dto.Properties with { - Format = "rawxml", + Format = policyContentFormat.GetPolicyContentFormat, Value = contents.ToString() } });