Skip to content
This repository was archived by the owner on Feb 23, 2024. It is now read-only.

Commit a18d561

Browse files
authored
Merge pull request #246 from bremnes/242-arm-escape-sample-value
Correcting to valid ARM code if operation sample value is json array
2 parents 37fba51 + 31d9ce4 commit a18d561

File tree

1 file changed

+30
-21
lines changed
  • src/APIM_ARMTemplate/apimtemplate/Extractor/EntityExtractors

1 file changed

+30
-21
lines changed

src/APIM_ARMTemplate/apimtemplate/Extractor/EntityExtractors/APIExtractor.cs

Lines changed: 30 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -192,35 +192,23 @@ public async Task<Template> GenerateAPIsARMTemplateAsync(string apimname, string
192192
operationResource.apiVersion = GlobalConstants.APIVersion;
193193
operationResource.scale = null;
194194

195-
// add api and schemas to operation dependsOn, if necessary
195+
// add operation dependencies and fix sample value if necessary
196196
List<string> operationDependsOn = new List<string>() { $"[resourceId('Microsoft.ApiManagement/service/apis', parameters('ApimServiceName'), '{oApiName}')]" };
197197
foreach (OperationTemplateRepresentation operationTemplateRepresentation in operationResource.properties.request.representations)
198198
{
199-
if (operationTemplateRepresentation.schemaId != null)
200-
{
201-
string dependsOn = $"[resourceId('Microsoft.ApiManagement/service/apis/schemas', parameters('ApimServiceName'), '{oApiName}', '{operationTemplateRepresentation.schemaId}')]";
202-
// add value to list if schema has not already been added
203-
if (!operationDependsOn.Exists(o => o == dependsOn))
204-
{
205-
operationDependsOn.Add(dependsOn);
206-
}
207-
}
199+
AddSchemaDependencyToOperationIfNecessary(oApiName, operationDependsOn, operationTemplateRepresentation);
200+
ArmEscapeSampleValueIfNecessary(operationTemplateRepresentation);
208201
}
202+
209203
foreach (OperationsTemplateResponse operationTemplateResponse in operationResource.properties.responses)
210204
{
211205
foreach (OperationTemplateRepresentation operationTemplateRepresentation in operationTemplateResponse.representations)
212206
{
213-
if (operationTemplateRepresentation.schemaId != null)
214-
{
215-
string dependsOn = $"[resourceId('Microsoft.ApiManagement/service/apis/schemas', parameters('ApimServiceName'), '{oApiName}', '{operationTemplateRepresentation.schemaId}')]";
216-
// add value to list if schema has not already been added
217-
if (!operationDependsOn.Exists(o => o == dependsOn))
218-
{
219-
operationDependsOn.Add(dependsOn);
220-
}
221-
}
207+
AddSchemaDependencyToOperationIfNecessary(oApiName, operationDependsOn, operationTemplateRepresentation);
208+
ArmEscapeSampleValueIfNecessary(operationTemplateRepresentation);
222209
}
223210
}
211+
224212
operationResource.dependsOn = operationDependsOn.ToArray();
225213
templateResources.Add(operationResource);
226214

@@ -342,7 +330,28 @@ public async Task<Template> GenerateAPIsARMTemplateAsync(string apimname, string
342330
return armTemplate;
343331
}
344332

345-
public static JObject FormatoApi(string singleApiName, JObject oApi)
333+
private static void ArmEscapeSampleValueIfNecessary(OperationTemplateRepresentation operationTemplateRepresentation)
334+
{
335+
if (!string.IsNullOrWhiteSpace(operationTemplateRepresentation.sample) && operationTemplateRepresentation.contentType == "application/json" && JToken.Parse(operationTemplateRepresentation.sample).Type == JTokenType.Array)
336+
{
337+
operationTemplateRepresentation.sample = "[" + operationTemplateRepresentation.sample;
338+
}
339+
}
340+
341+
private static void AddSchemaDependencyToOperationIfNecessary(string oApiName, List<string> operationDependsOn, OperationTemplateRepresentation operationTemplateRepresentation)
342+
{
343+
if (operationTemplateRepresentation.schemaId != null)
344+
{
345+
string dependsOn = $"[resourceId('Microsoft.ApiManagement/service/apis/schemas', parameters('ApimServiceName'), '{oApiName}', '{operationTemplateRepresentation.schemaId}')]";
346+
// add value to list if schema has not already been added
347+
if (!operationDependsOn.Exists(o => o == dependsOn))
348+
{
349+
operationDependsOn.Add(dependsOn);
350+
}
351+
}
352+
}
353+
354+
private static JObject FormatoApi(string singleApiName, JObject oApi)
346355
{
347356
if (singleApiName != null)
348357
{
@@ -364,7 +373,7 @@ public static JObject FormatoApi(string singleApiName, JObject oApi)
364373
return oApi;
365374
}
366375

367-
public async Task<List<TemplateResource>> GenerateSchemasARMTemplate(string apimServiceName, string apiName, string resourceGroup, string fileFolder)
376+
private async Task<List<TemplateResource>> GenerateSchemasARMTemplate(string apimServiceName, string apiName, string resourceGroup, string fileFolder)
368377
{
369378
List<TemplateResource> templateResources = new List<TemplateResource>();
370379

0 commit comments

Comments
 (0)