private string CreateOrUpdateApi(string apiName, string route, string serviceUrl) { var existingApi = GetApiByName(apiName); var apiId = (existingApi != null) ? existingApi.Id : Guid.NewGuid().ToString(); if (existingApi != null) { Log.Info($"Updating existing Api {existingApi.Id}"); } var apiCreateOrUpdateParams = new ApiCreateOrUpdateParameters { ApiContract = new ApiContract { Name = apiName, Description = $"Description: {apiName}", Path = route, ServiceUrl = serviceUrl, Type = ApiTypeContract.Http, Protocols = new List <ApiProtocolContract> { ApiProtocolContract.Https } } }; using (var mc = new ApiManagementClient(SubscriptionCloudCredentials)) { mc.Apis.CreateOrUpdate(ApiManagementResGrpName, ApiManagementName, apiId, apiCreateOrUpdateParams, string.Empty); } Log.Info($"Successfully Created or Updated Api {apiName} Id: {apiId}"); return(apiId); }
public static void TryCreateApiService( this ApiManagementClient client, string resourceGroupName, string apiServiceName, string location, SkuType skuType = SkuType.Developer) { client.ResourceProvider.CreateOrUpdate( resourceGroupName, apiServiceName, new ApiServiceCreateOrUpdateParameters { Location = location, Properties = new ApiServiceProperties { AddresserEmail = "*****@*****.**", PublisherEmail = "*****@*****.**", PublisherName = "apimgmt" }, SkuProperties = new ApiServiceSkuProperties { Capacity = 1, SkuType = skuType } }); var response = client.ResourceProvider.Get(resourceGroupName, apiServiceName); ThrowIfTrue(!response.Value.Name.Equals(apiServiceName), string.Format("ApiService name is not equal to {0}", apiServiceName)); }
public static void TryCreateApiService( this ApiManagementClient client, string resourceGroupName, string apiServiceName, string location, string skuType = SkuType.Developer) { client.ApiManagementService.CreateOrUpdate( resourceGroupName, apiServiceName, new ApiManagementServiceResource { Location = location, NotificationSenderEmail = "*****@*****.**", PublisherEmail = "*****@*****.**", PublisherName = "apimgmt", Sku = new ApiManagementServiceSkuProperties { Capacity = 1, Name = skuType }, }); var response = client.ApiManagementService.Get(resourceGroupName, apiServiceName); ThrowIfTrue(!response.Name.Equals(apiServiceName), string.Format("ApiService name is not equal to {0}", apiServiceName)); }
private IEnumerable <ApiContract> GetApisFromServiceManager(string apiManagementName, string apiManagementResGrpName) { using (var mc = new ApiManagementClient(SubscriptionCloudCredentials)) { var listResponse = mc.Apis.List(apiManagementResGrpName, apiManagementName, null); return(listResponse.Result.Values); } }
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); }
private void CreateOrUpdateProduct(string productName, string apiId) { var product = GetProductIdFromName(productName); using (var mc = new ApiManagementClient(SubscriptionCloudCredentials)) { mc.ProductApis.Add(ApiManagementResGrpName, ApiManagementName, product.Id, apiId); } Log.Info($"Successfully Created or Updated Product {product.Name} Id: {product.Id}"); }
private async void BGetSubscriptions_Click(object sender, EventArgs e) { ApiManagementConnection ClientFactory = new ApiManagementConnection(TBBearerToken.Text, TBSubscriptionId.Text); ApiManagementClient Client = ClientFactory.Instance; SubscriptionListResponse Response = await Client.Subscriptions.ListAsync(TBResourceGroup.Text, TBServiceName.Text, null); DGVSubscriptions.DataSource = new BindingSource(Response.Result, "Values"); }
public static void RefreshAccessToken(this ApiManagementClient apiManagementClient) { if (HttpMockServer.Mode == HttpRecorderMode.Playback) { // if it's playback then do nothing return; } var testEnvironment = new CSMTestEnvironmentFactory().GetTestEnvironment(); var context = new AuthenticationContext(new Uri(testEnvironment.Endpoints.AADAuthUri, testEnvironment.Tenant).AbsoluteUri); var result = context.AcquireToken("https://management.core.windows.net/", testEnvironment.ClientId, new Uri("urn:ietf:wg:oauth:2.0:oob"), PromptBehavior.Auto); var newToken = context.AcquireTokenByRefreshToken(result.RefreshToken, testEnvironment.ClientId, "https://management.core.windows.net/"); ((TokenCloudCredentials)apiManagementClient.Credentials).Token = newToken.AccessToken; }
private async Task GetApiManagementProducts() { if (Wizard.Pages.First(x => x.Legend == Resources.Page2Legend).IsSelected) { using (Context.StartBusyIndicator(Resources.WaitMessageRetrievingProductList)) { IAzureRMUserAccountSubscriptionContext sub = _selectedSubscription; if (sub == null) { return; } Token = await sub.GetAuthenticationHeaderAsync(true); Token = Token.Substring("Bearer ".Length); ApiManagementClient = new ApiManagementClient( new TokenCloudCredentials(SelectedSubscription.Subscription.SubscriptionId, Token) ); var productResponse = await ApiManagementClient.Products.ListAsync( ResourceUtilities.GetResourceGroupFromResourceId(SelectedApiManagementInstance.ResourceId), SelectedApiManagementInstance.Name, new QueryParameters() ); var products = new List <ApiManagementProduct>(); foreach (var product in productResponse.Result.Values) { products.Add(new ApiManagementProduct { Name = product.Name, Id = product.Id }); } _dispatcher.Invoke(() => { Products.Clear(); products.ForEach(p => Products.Add(p)); }); } } }
public static void RefreshAccessToken(this ApiManagementClient apiManagementClient) { //if (HttpMockServer.Mode == HttpRecorderMode.Playback) //{ // // if it's playback then do nothing // return; //} //var testEnvironment = new CSMTestEnvironmentFactory().GetTestEnvironment(); ////var context = TokenCloudCredentialsHelper.GetToken(testEnvironment.Endpoints.AADAuthUri.ToString(), testEnvironment.Tenant, testEnvironment.ClientId, (string)null, (string)null); //var context = new AuthenticationContext(new Uri(testEnvironment.Endpoints.AADAuthUri, testEnvironment.Tenant).AbsoluteUri); //var result = context.AcquireToken("https://management.core.windows.net/", testEnvironment.ClientId, new Uri("urn:ietf:wg:oauth:2.0:oob"), PromptBehavior.Auto); //var newToken = context.AcquireTokenByRefreshToken(result.RefreshToken, testEnvironment.ClientId, "https://management.core.windows.net/"); ////context.TokenCache.ReadItems().Where(item => item.) //((TokenCloudCredentials) apiManagementClient.Credentials).Token = newToken.AccessToken; }
public static void UseAzureApiMangement(this ITunnelBuilderThatHasAnOpenApiDocumentEndpoint builder, AzureApiManagementCreateApiOptions options = null) { options ??= new AzureApiManagementCreateApiOptions(); var publicSwaggerUrl = $"{builder.RootUrl}/{builder.OpenApiDocumentEndpoint}"; var subscriptionId = Environment.GetEnvironmentVariable("AZURE_SUBSCRIPTION_ID"); var clientId = Environment.GetEnvironmentVariable("AZURE_CLIENT_ID"); var clientSecret = Environment.GetEnvironmentVariable("AZURE_CLIENT_SECRET"); var tenantId = Environment.GetEnvironmentVariable("AZURE_TENANT_ID"); var credentials = SdkContext.AzureCredentialsFactory .FromServicePrincipal(clientId, clientSecret, tenantId, AzureEnvironment.AzureGlobalCloud) .WithDefaultSubscription(subscriptionId); ApiManagementClient = new ApiManagementClient(credentials); ApiManagementClient.SubscriptionId = subscriptionId; ApiCreateOrUpdateParameter parms = new ApiCreateOrUpdateParameter { Path = $"{options.ApiId}/{CleanVersion(builder.Version)}", Format = ContentFormat.OpenapijsonLink, Value = publicSwaggerUrl, ServiceUrl = builder.RootUrl }; // wait for the host to start to try to hit it builder.Host.Services.GetService <IHostApplicationLifetime>().ApplicationStarted.Register(() => { ApiManagementClient.Api.CreateOrUpdate( options.ResourceGroupName, options.ApiManagementServiceName, $"{options.ApiId}-{CleanVersion(builder.Version)}", parms ); }); }
public static void RefreshAccessToken(this ApiManagementClient apiManagementClient) { }