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>();
            }
        }
Пример #2
0
        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);
        }