3
3
using Newtonsoft . Json ;
4
4
using System . Collections . Generic ;
5
5
using System . IO ;
6
+ using Microsoft . Azure . Management . ApiManagement . ArmTemplates . Create ;
7
+ using Microsoft . Azure . Management . ApiManagement . ArmTemplates . Extract . Operation ;
6
8
7
9
namespace Microsoft . Azure . Management . ApiManagement . ArmTemplates . Extract
8
10
{
@@ -27,10 +29,11 @@ public ExtractCommand()
27
29
string apimname = apiManagementName . Values [ 0 ] . ToString ( ) ;
28
30
Api api = new Api ( ) ;
29
31
string apis = api . GetAPIs ( apimname , resourceGroup ) . Result ;
30
-
32
+
31
33
ExtractedAPI extractedAPI = JsonConvert . DeserializeObject < ExtractedAPI > ( apis ) ;
32
34
Console . WriteLine ( "{0} API's found!" , extractedAPI . value . Count . ToString ( ) ) ;
33
-
35
+ FileReader fileReader = new FileReader ( ) ;
36
+
34
37
for ( int i = 0 ; i < extractedAPI . value . Count ; i ++ )
35
38
{
36
39
APIConfig apiConfig = new APIConfig ( ) ;
@@ -42,13 +45,27 @@ public ExtractCommand()
42
45
apimServiceName = apimname ,
43
46
api = apiConfig
44
47
} ;
45
- creatorConfig . api . openApiSpec = null ;
48
+ creatorConfig . api . openApiSpec = "2.0" ;
46
49
creatorConfig . api . name = extractedAPI . value [ i ] . name ;
47
50
creatorConfig . api . apiVersion = extractedAPI . value [ i ] . properties . apiVersion ;
48
51
creatorConfig . api . apiVersionDescription = extractedAPI . value [ i ] . properties . apiVersionDescription ;
49
- creatorConfig . api . suffix = extractedAPI . value [ i ] . properties . path ;
52
+ creatorConfig . api . suffix = extractedAPI . value [ i ] . properties . path ;
50
53
creatorConfig . linked = false ;
51
54
55
+ Dictionary < string , OperationsConfig > operationsDic = new Dictionary < string , OperationsConfig > ( ) ;
56
+ //operation list
57
+ string operations = api . GetAPIOperations ( apimname , resourceGroup , creatorConfig . api . name ) . Result ;
58
+ var o = JsonConvert . DeserializeObject < Operation . Operation > ( operations ) ;
59
+ OperationsConfig op = new OperationsConfig ( ) ;
60
+ foreach ( var item in o . value )
61
+ {
62
+ string pol = api . GetOperationPolicy ( apimname , resourceGroup , creatorConfig . api . name , item . name ) . Result ;
63
+ var p = JsonConvert . DeserializeObject < Operation . Operation > ( pol ) ;
64
+ operationsDic . Add ( item . name , p . value [ 0 ] . properties . policyContent ) ;
65
+ creatorConfig . api . operations = operationsDic ;
66
+
67
+ }
68
+
52
69
if ( extractedAPI . value [ i ] . properties . apiVersionSetId != null )
53
70
{
54
71
string APIVersionSetFull = extractedAPI . value [ i ] . properties . apiVersionSetId ;
@@ -59,34 +76,104 @@ public ExtractCommand()
59
76
creatorConfig . apiVersionSet = apiv . properties ;
60
77
}
61
78
79
+ FileWriter fileWriter = new FileWriter ( ) ;
62
80
TemplateCreator templateCreator = new TemplateCreator ( ) ;
81
+
63
82
APIVersionSetTemplateCreator apiVersionSetTemplateCreator = new APIVersionSetTemplateCreator ( templateCreator ) ;
64
83
ProductAPITemplateCreator productAPITemplateCreator = new ProductAPITemplateCreator ( ) ;
65
- // PolicyTemplateCreator policyTemplateCreator = new PolicyTemplateCreator(fileReader );
66
- APITemplateCreator apiTemplateCreator = new APITemplateCreator ( templateCreator ) ;
67
- // MasterTemplateCreator masterTemplateCreator = new MasterTemplateCreator(templateCreator);
84
+ PolicyTemplateCreator policyTemplateCreator = new PolicyTemplateCreator ( ) ;
85
+ APITemplateCreatorEx apiTemplateCreator = new APITemplateCreatorEx ( templateCreator , policyTemplateCreator , productAPITemplateCreator ) ;
86
+ MasterTemplateCreator masterTemplateCreator = new MasterTemplateCreator ( templateCreator ) ;
68
87
69
88
// create templates from provided configuration
70
- Template apiVersionSetTemplate = creatorConfig . apiVersionSet != null ? apiVersionSetTemplateCreator . CreateAPIVersionSetTemplate ( creatorConfig ) : null ;
71
- Template apiTemplate = await apiTemplateCreator . CreateAPITemplateAsync ( creatorConfig ) ;
72
-
73
- FileWriter fileWriter = new FileWriter ( ) ;
74
89
CreatorFileNames creatorFileNames = fileWriter . GenerateCreatorFileNames ( ) ;
75
-
76
- if ( extractedAPI . value [ i ] . properties . apiVersionSetId != null )
90
+ Template apiVersionSetTemplate = creatorConfig . apiVersionSet != null ? apiVersionSetTemplateCreator . CreateAPIVersionSetTemplate ( creatorConfig ) : null ;
91
+ Template initialAPITemplate = await apiTemplateCreator . CreateInitialAPITemplateAsync ( creatorConfig ) ;
92
+ Template subsequentAPITemplate = await apiTemplateCreator . CreateSubsequentAPITemplateAsync ( creatorConfig ) ;
93
+ if ( creatorConfig . linked == true )
77
94
{
78
- Console . WriteLine ( "Writing API Version Set File for {0} API ..." , extractedAPI . value [ i ] . name ) ;
79
- fileWriter . WriteJSONToFile ( apiVersionSetTemplate , String . Concat ( creatorConfig . outputLocation , extractedAPI . value [ i ] . name , "-" , creatorFileNames . apiVersionSet ) ) ;
80
- }
81
- else Console . WriteLine ( "{0} has no API version set." , extractedAPI . value [ i ] . name ) ;
95
+ Template masterTemplate = masterTemplateCreator . CreateLinkedMasterTemplate ( apiVersionSetTemplate , initialAPITemplate , subsequentAPITemplate , creatorFileNames ) ;
96
+ Template masterTemplateParameters = masterTemplateCreator . CreateMasterTemplateParameterValues ( creatorConfig ) ;
82
97
83
- Console . WriteLine ( "Writing API File for {0} API ..." , extractedAPI . value [ i ] . name ) ;
84
- fileWriter . WriteJSONToFile ( apiTemplate , String . Concat ( creatorConfig . outputLocation , extractedAPI . value [ i ] . name , "-" , creatorFileNames . api ) ) ;
98
+ // write templates to outputLocation
99
+ if ( apiVersionSetTemplate != null )
100
+ {
101
+ fileWriter . WriteJSONToFile ( apiVersionSetTemplate , String . Concat ( creatorConfig . outputLocation , creatorFileNames . apiVersionSet ) ) ;
102
+ }
103
+ fileWriter . WriteJSONToFile ( initialAPITemplate , String . Concat ( creatorConfig . outputLocation , creatorFileNames . initialAPI ) ) ;
104
+ fileWriter . WriteJSONToFile ( subsequentAPITemplate , String . Concat ( creatorConfig . outputLocation , creatorFileNames . subsequentAPI ) ) ;
105
+ fileWriter . WriteJSONToFile ( masterTemplate , String . Concat ( creatorConfig . outputLocation , "/master.template.json" ) ) ;
106
+ fileWriter . WriteJSONToFile ( masterTemplateParameters , String . Concat ( creatorConfig . outputLocation , "/master.parameters.json" ) ) ;
107
+ }
108
+ else
109
+ {
110
+ Template initialMasterTemplate = masterTemplateCreator . CreateInitialUnlinkedMasterTemplate ( apiVersionSetTemplate , initialAPITemplate ) ;
111
+ Template subsequentMasterTemplate = masterTemplateCreator . CreateSubsequentUnlinkedMasterTemplate ( subsequentAPITemplate ) ;
112
+ Template masterTemplateParameters = masterTemplateCreator . CreateMasterTemplateParameterValues ( creatorConfig ) ;
113
+ fileWriter . WriteJSONToFile ( initialMasterTemplate , String . Concat ( creatorConfig . outputLocation , creatorConfig . api . name , "-master1.template.json" ) ) ;
114
+ fileWriter . WriteJSONToFile ( subsequentMasterTemplate , String . Concat ( creatorConfig . outputLocation , creatorConfig . api . name , "-master2.template.json" ) ) ;
115
+ fileWriter . WriteJSONToFile ( masterTemplateParameters , String . Concat ( creatorConfig . outputLocation , creatorConfig . api . name , "-master.parameters.json" ) ) ;
116
+ }
85
117
}
86
- Console . WriteLine ( "All files are saved on {0} folder! Press any key." , Directory . GetCurrentDirectory ( ) ) ;
118
+ Console . WriteLine ( "Templates written to output location" ) ;
87
119
Console . ReadKey ( ) ;
88
- return 0 ;
89
120
} ) ;
90
121
}
91
122
}
92
- }
123
+ }
124
+
125
+ // for (int i = 0; i<extractedAPI.value.Count; i++)
126
+ // {
127
+ // APIConfig apiConfig = new APIConfig();
128
+
129
+ //CreatorConfig creatorConfig = new CreatorConfig
130
+ //{
131
+ // version = "1.0.0",
132
+ // outputLocation = @"",
133
+ // apimServiceName = apimname,
134
+ // api = apiConfig
135
+ //};
136
+ //creatorConfig.api.openApiSpec = null;
137
+ // creatorConfig.api.name = extractedAPI.value[i].name;
138
+ // creatorConfig.api.apiVersion = extractedAPI.value[i].properties.apiVersion;
139
+ // creatorConfig.api.apiVersionDescription = extractedAPI.value[i].properties.apiVersionDescription;
140
+ // creatorConfig.api.suffix = extractedAPI.value[i].properties.path;
141
+ // creatorConfig.linked = false;
142
+
143
+ // if (extractedAPI.value[i].properties.apiVersionSetId != null)
144
+ // {
145
+ // string APIVersionSetFull = extractedAPI.value[i].properties.apiVersionSetId;
146
+ //string APIVersionSetId = APIVersionSetFull.Substring(APIVersionSetFull.LastIndexOf('/') + 1);
147
+ //APIVersionSetId = api.GetAPIVersionSet(apimname, resourceGroup, APIVersionSetId).Result;
148
+ // APIVersionSetTemplateResource apiv = JsonConvert.DeserializeObject<APIVersionSetTemplateResource>(APIVersionSetId);
149
+
150
+ //creatorConfig.apiVersionSet = apiv.properties;
151
+ // }
152
+
153
+ // TemplateCreator templateCreator = new TemplateCreator();
154
+ //APIVersionSetTemplateCreator apiVersionSetTemplateCreator = new APIVersionSetTemplateCreator(templateCreator);
155
+ //ProductAPITemplateCreator productAPITemplateCreator = new ProductAPITemplateCreator();
156
+ ////PolicyTemplateCreator policyTemplateCreator = new PolicyTemplateCreator(fileReader);
157
+ //APITemplateCreator apiTemplateCreator = new APITemplateCreator(templateCreator);
158
+ ////MasterTemplateCreator masterTemplateCreator = new MasterTemplateCreator(templateCreator);
159
+
160
+ //// create templates from provided configuration
161
+ //Template apiVersionSetTemplate = creatorConfig.apiVersionSet != null ? apiVersionSetTemplateCreator.CreateAPIVersionSetTemplate(creatorConfig) : null;
162
+ //Template apiTemplate = await apiTemplateCreator.CreateAPITemplateAsync(creatorConfig);
163
+
164
+ //FileWriter fileWriter = new FileWriter();
165
+ //CreatorFileNames creatorFileNames = fileWriter.GenerateCreatorFileNames();
166
+
167
+ // if (extractedAPI.value[i].properties.apiVersionSetId != null)
168
+ // {
169
+ // Console.WriteLine("Writing API Version Set File for {0} API ...", extractedAPI.value[i].name);
170
+ // fileWriter.WriteJSONToFile(apiVersionSetTemplate, String.Concat(creatorConfig.outputLocation, extractedAPI.value[i].name, "-", creatorFileNames.apiVersionSet));
171
+ // }
172
+ // else Console.WriteLine("{0} has no API version set.", extractedAPI.value[i].name);
173
+
174
+ // Console.WriteLine("Writing API File for {0} API ...", extractedAPI.value[i].name);
175
+ // fileWriter.WriteJSONToFile(apiTemplate, String.Concat(creatorConfig.outputLocation, extractedAPI.value[i].name, "-", creatorFileNames.initialAPI));
176
+ // }
177
+ // Console.WriteLine("All files are saved on {0} folder! Press any key.", Directory.GetCurrentDirectory());
178
+ // Console.ReadKey();
179
+ // return 0;
0 commit comments