Azure.ApiManagement.IngestTool.ApimConnectedServiceHandler.AddServiceInstanceAsync C# (CSharp) Method

AddServiceInstanceAsync() public method

public AddServiceInstanceAsync ( ConnectedServiceHandlerContext context, CancellationToken ct ) : Task
context ConnectedServiceHandlerContext
ct System.Threading.CancellationToken
return Task
        public async override Task<AddServiceInstanceResult> AddServiceInstanceAsync(ConnectedServiceHandlerContext context, CancellationToken ct)
        {
            string token = (string)context.Args[Constants.CONNECTED_SERVICE_METADATA_KEY_FOR_ADAL_TOKEN];
            string subscriptionId = (string)context.Args[Constants.CONNECTED_SERVICE_METADATA_KEY_FOR_SUB_ID];
            string swaggerJson = (string)context.Args[Constants.CONNECTED_SERVICE_METADATA_KEY_FOR_SWAGGER];
            IEnumerable<ApiManagementProduct> products = (IEnumerable<ApiManagementProduct>)context.Args[Constants.CONNECTED_SERVICE_METADATA_KEY_FOR_PRODUCTS];
            ApiManagementInstance apimInstance = (ApiManagementInstance)context.Args[Constants.CONNECTED_SERVICE_METADATA_KEY_FOR_APIM_INSTANCE];
            ApiAppResource apiApp = (ApiAppResource)context.Args[Constants.CONNECTED_SERVICE_METADATA_KEY_FOR_API_APP];

            using (var apiManagementClient = new ApiManagementClient(
                new TokenCloudCredentials(subscriptionId, token)
                ))
            {
                await context.Logger.WriteMessageAsync(LoggerMessageCategory.Information,
                    Resources.ProgressMessageImportingSwaggerTemplate,
                    apiApp.Name,
                    apimInstance.Name);

                // import the api
                using (MemoryStream stream = new MemoryStream())
                {
                    var writer = new StreamWriter(stream);
                    writer.Write(swaggerJson);
                    writer.Flush();
                    stream.Position = 0;

                    apiManagementClient.Apis.Import(
                        ResourceUtilities.GetResourceGroupFromResourceId(apimInstance.ResourceId),
                        apimInstance.Name,
                        apiApp.Name,
                        Constants.SWAGGER_CONTENT_TYPE,
                        stream,
                        apiApp.Name);
                }

                // add the api to products
                foreach (var product in products)
                {
                    await context.Logger.WriteMessageAsync(LoggerMessageCategory.Information,
                        Resources.ProgressMessageAddingApiToProductTemplate,
                        apiApp.Name,
                        product.Name);

                    apiManagementClient.ProductApis.Add(
                        ResourceUtilities.GetResourceGroupFromResourceId(apimInstance.ResourceId),
                        apimInstance.Name,
                        product.Id,
                        apiApp.Name);
                }
            }

            AddServiceInstanceResult result = new AddServiceInstanceResult(
               "AzureApiManagement",
               null);

            return result;
        }
    }
ApimConnectedServiceHandler