25
25
using Microsoft . Azure . Management . ApiManagement . ArmTemplates . Common . Templates . Policy ;
26
26
using Microsoft . Azure . Management . ApiManagement . ArmTemplates . Common . Templates . ProductApis ;
27
27
using Microsoft . Azure . Management . ApiManagement . ArmTemplates . Common . Templates . Products ;
28
+ using Microsoft . Azure . Management . ApiManagement . ArmTemplates . Common . Templates . Schemas ;
28
29
using Microsoft . Azure . Management . ApiManagement . ArmTemplates . Common . Templates . TagApi ;
29
30
using Microsoft . Azure . Management . ApiManagement . ArmTemplates . Common . Templates . Tags ;
30
31
using Microsoft . Azure . Management . ApiManagement . ArmTemplates . Extractor . EntityExtractors . Abstractions ;
@@ -64,6 +65,7 @@ public class ExtractorExecutor
64
65
readonly IGatewayApiExtractor gatewayApiExtractor ;
65
66
readonly IIdentityProviderExtractor identityProviderExtractor ;
66
67
readonly IApiManagementServiceExtractor apiManagementServiceExtractor ;
68
+ readonly ISchemaExtractor schemaExtractor ;
67
69
68
70
public ExtractorExecutor (
69
71
ILogger < ExtractorExecutor > logger ,
@@ -86,7 +88,8 @@ public ExtractorExecutor(
86
88
IGatewayExtractor gatewayExtractor ,
87
89
IGatewayApiExtractor gatewayApiExtractor ,
88
90
IIdentityProviderExtractor identityProviderExtractor ,
89
- IApiManagementServiceExtractor apiManagementServiceExtractor )
91
+ IApiManagementServiceExtractor apiManagementServiceExtractor ,
92
+ ISchemaExtractor schemaExtractor )
90
93
{
91
94
this . logger = logger ;
92
95
this . apisClient = apisClient ;
@@ -109,6 +112,7 @@ public ExtractorExecutor(
109
112
this . gatewayApiExtractor = gatewayApiExtractor ;
110
113
this . identityProviderExtractor = identityProviderExtractor ;
111
114
this . apiManagementServiceExtractor = apiManagementServiceExtractor ;
115
+ this . schemaExtractor = schemaExtractor ;
112
116
}
113
117
114
118
/// <summary>
@@ -136,7 +140,8 @@ public static ExtractorExecutor BuildExtractorExecutor(
136
140
IGatewayExtractor gatewayExtractor = null ,
137
141
IGatewayApiExtractor gatewayApiExtractor = null ,
138
142
IIdentityProviderExtractor identityProviderExtractor = null ,
139
- IApiManagementServiceExtractor apiManagementServiceExtractor = null )
143
+ IApiManagementServiceExtractor apiManagementServiceExtractor = null ,
144
+ ISchemaExtractor schemaExtractor = null )
140
145
=> new ExtractorExecutor (
141
146
logger ,
142
147
apisClient ,
@@ -158,7 +163,8 @@ public static ExtractorExecutor BuildExtractorExecutor(
158
163
gatewayExtractor ,
159
164
gatewayApiExtractor ,
160
165
identityProviderExtractor ,
161
- apiManagementServiceExtractor ) ;
166
+ apiManagementServiceExtractor ,
167
+ schemaExtractor ) ;
162
168
163
169
public void SetExtractorParameters ( ExtractorParameters extractorParameters )
164
170
{
@@ -453,7 +459,8 @@ public async Task<Template<MasterTemplateResources>> GenerateMasterTemplateAsync
453
459
NamedValuesResources namedValuesTemplateResources = null ,
454
460
TagTemplateResources tagTemplateResources = null ,
455
461
GroupTemplateResources groupTemplateResources = null ,
456
- IdentityProviderResources identityProviderTemplateResources = null )
462
+ IdentityProviderResources identityProviderTemplateResources = null ,
463
+ SchemaTemplateResources schemaTemplateResources = null )
457
464
{
458
465
if ( string . IsNullOrEmpty ( this . extractorParameters . LinkedTemplatesBaseUrl ) )
459
466
{
@@ -467,7 +474,7 @@ public async Task<Template<MasterTemplateResources>> GenerateMasterTemplateAsync
467
474
this . extractorParameters , apiTemplateResources , policyTemplateResources , apiVersionSetTemplateResources ,
468
475
productsTemplateResources , productApisTemplateResources , apiTagsTemplateResources , loggersTemplateResources ,
469
476
backendsTemplateResources , authorizationServersTemplateResources , namedValuesTemplateResources , tagTemplateResources ,
470
- groupTemplateResources , identityProviderTemplateResources ) ;
477
+ groupTemplateResources , identityProviderTemplateResources , schemaTemplateResources ) ;
471
478
472
479
if ( masterTemplate ? . HasResources ( ) == true )
473
480
{
@@ -751,6 +758,29 @@ await FileWriter.SaveAsJsonAsync(
751
758
return apiManagementServiceTemplate ;
752
759
}
753
760
761
+ /// <summary>
762
+ /// Generates schema templates in the desired folder
763
+ /// </summary>
764
+ /// <param name="baseFilesGenerationDirectory">name of base folder where to save output files</param>
765
+ /// <returns>generated schemas template</returns>
766
+ public async Task < Template < SchemaTemplateResources > > GenerateSchemasTemplateAsync ( string baseFilesGenerationDirectory )
767
+ {
768
+ this . logger . LogInformation ( "Started generation of schemas template..." ) ;
769
+
770
+ var schemasTemplate = await this . schemaExtractor . GenerateSchemasTemplateAsync ( this . extractorParameters ) ;
771
+
772
+ if ( schemasTemplate ? . HasResources ( ) == true )
773
+ {
774
+ await FileWriter . SaveAsJsonAsync (
775
+ schemasTemplate ,
776
+ directory : baseFilesGenerationDirectory ,
777
+ fileName : this . extractorParameters . FileNames . Schema ) ;
778
+ }
779
+
780
+ this . logger . LogInformation ( "Finished generation of schemas template..." ) ;
781
+ return schemasTemplate ;
782
+ }
783
+
754
784
/// <summary>
755
785
/// Generates split api templates / folders for each api in this sourceApim
756
786
/// </summary>
@@ -931,6 +961,7 @@ async Task GenerateTemplates(
931
961
var backendTemplate = await this . GenerateBackendTemplateAsync ( singleApiName , apiTemplate . TypedResources . GetAllPolicies ( ) , namedValueTemplate . TypedResources . NamedValues , baseFilesGenerationDirectory ) ;
932
962
var groupTemplate = await this . GenerateGroupsTemplateAsync ( baseFilesGenerationDirectory ) ;
933
963
var identityProviderTemplate = await this . GenerateIdentityProviderTemplateAsync ( baseFilesGenerationDirectory ) ;
964
+ var schemasTempate = await this . GenerateSchemasTemplateAsync ( baseFilesGenerationDirectory ) ;
934
965
await this . GenerateGatewayTemplateAsync ( singleApiName , baseFilesGenerationDirectory ) ;
935
966
await this . GenerateGatewayApiTemplateAsync ( singleApiName , multipleApiNames , baseFilesGenerationDirectory ) ;
936
967
await this . GenerateApiManagementServiceTemplate ( baseFilesGenerationDirectory ) ;
@@ -950,7 +981,8 @@ await this.GenerateMasterTemplateAsync(
950
981
namedValuesTemplateResources : namedValueTemplate . TypedResources ,
951
982
tagTemplateResources : tagTemplate . TypedResources ,
952
983
groupTemplateResources : groupTemplate . TypedResources ,
953
- identityProviderTemplateResources : identityProviderTemplate . TypedResources ) ;
984
+ identityProviderTemplateResources : identityProviderTemplate . TypedResources ,
985
+ schemaTemplateResources : schemasTempate . TypedResources ) ;
954
986
}
955
987
956
988
0 commit comments