void SetArmTemplateValuesToApiTemplateResource(ApiTemplateResource apiResource, ExtractorParameters extractorParameters) { var originalServiceApiName = apiResource.Name; apiResource.Name = $"[concat(parameters('{ParameterNames.ApimServiceName}'), '/{originalServiceApiName}')]"; apiResource.ApiVersion = GlobalConstants.ApiVersion; apiResource.Scale = null; if (extractorParameters.ParameterizeServiceUrl) { apiResource.Properties.ServiceUrl = $"[parameters('{ParameterNames.ServiceUrl}').{ParameterNamingHelper.GenerateValidParameterName(originalServiceApiName, ParameterPrefix.Api)}]"; } if (apiResource.Properties.ApiVersionSetId != null) { apiResource.DependsOn = Array.Empty <string>(); string versionSetName = apiResource.Properties.ApiVersionSetId; int versionSetPosition = versionSetName.IndexOf("apiVersionSets/"); versionSetName = versionSetName.Substring(versionSetPosition, versionSetName.Length - versionSetPosition); apiResource.Properties.ApiVersionSetId = $"[concat(resourceId('Microsoft.ApiManagement/service', parameters('{ParameterNames.ApimServiceName}')), '/{versionSetName}')]"; } else { apiResource.DependsOn = Array.Empty <string>(); } }
private async Task <ApiTemplateResource> CreateApiTemplateResourceAsync(ApiDeploymentDefinition api, bool isInitial) { ApiTemplateResource apiTemplateResource = new ApiTemplateResource() { Name = $"[concat(parameters('ApimServiceName'), '/{api.Name}')]", Properties = new ApiProperties(), DependsOn = new string[] { } }; if (isInitial) { var openAPISpecReader = new OpenAPISpecReader(api.OpenApiSpec); apiTemplateResource.Properties.Format = await openAPISpecReader.GetOpenApiFormat(); apiTemplateResource.Properties.Value = await openAPISpecReader.GetValue();; apiTemplateResource.Properties.Path = api.Path; } else { var path = api.Path.Replace("//", "/"); if (path.StartsWith("/")) { path = path.Substring(1); } apiTemplateResource.Properties.ApiVersion = api.ApiVersion; apiTemplateResource.Properties.ServiceUrl = api.ServiceUrl; apiTemplateResource.Properties.Type = api.Type; apiTemplateResource.Properties.ApiType = api.ApiType; apiTemplateResource.Properties.Description = api.Description; apiTemplateResource.Properties.SubscriptionRequired = api.SubscriptionRequired; apiTemplateResource.Properties.ApiRevision = api.ApiRevision; apiTemplateResource.Properties.ApiRevisionDescription = api.ApiRevisionDescription; apiTemplateResource.Properties.ApiVersionDescription = api.ApiVersionDescription; apiTemplateResource.Properties.AuthenticationSettings = api.AuthenticationSettings; apiTemplateResource.Properties.Path = path; apiTemplateResource.Properties.IsCurrent = api.IsCurrent; apiTemplateResource.Properties.DisplayName = api.DisplayName; apiTemplateResource.Properties.SubscriptionKeyParameterNames = api.SubscriptionKeyParameterNames; apiTemplateResource.Properties.Protocols = api.Protocols.GetItems(new[] { "https" }); if (api.ApiVersionSetId != null) { apiTemplateResource.Properties.ApiVersionSetId = $"[resourceId('{ResourceType.ApiVersionSet}', parameters('ApimServiceName'), '{api.ApiVersionSetId}')]"; } if (api.AuthenticationSettings != null && api.AuthenticationSettings.OAuth2 != null && api.AuthenticationSettings.OAuth2.AuthorizationServerId != null && apiTemplateResource.Properties.AuthenticationSettings != null && apiTemplateResource.Properties.AuthenticationSettings.OAuth2 != null && apiTemplateResource.Properties.AuthenticationSettings.OAuth2.AuthorizationServerId != null) { apiTemplateResource.Properties.AuthenticationSettings.OAuth2.AuthorizationServerId = api.AuthenticationSettings.OAuth2.AuthorizationServerId; } } return(apiTemplateResource); }