public void Post([FromBody] ApiMetadataDTO apiMetadata) { if (ModelState.IsValid) { Console.WriteLine("API Management Synchronizer"); Console.WriteLine("==========================="); Console.WriteLine(string.Format("API Name: {0}", apiMetadata.ApiName)); Console.WriteLine(string.Format("Azure Api Version: {0}", apiMetadata.AzureApiVersion)); Console.WriteLine(string.Format("Swagger Url: {0}", apiMetadata.SwaggerUrl)); Console.WriteLine(string.Format("Tenant Name: {0}", apiMetadata.TenantName)); // Actions Console.Write("Getting Existing Apis..."); var apiInfo = this._apiManagementClient.GetAsociatedApi(apiMetadata).Result; if (apiInfo.ApiExists()) { // Upgrade Api Console.ForegroundColor = ConsoleColor.Green; Console.Write("OK"); Console.ResetColor(); Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine(" - Api Found: {0}", apiInfo.ApiAid); Console.ResetColor(); Console.Write("Deploying API: {0} to Management API...", apiInfo.ApiAid); this._apiManagementClient.UpgradeSwaggerApi(apiInfo.ApiAid, apiMetadata).Wait(); Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("Sync"); Console.ResetColor(); // Checking Policies Console.Write("Getting API Policies..."); var policy = this._apiManagementClient.GetPolicy(apiInfo.ApiAid, apiMetadata).Result; Console.ForegroundColor = ConsoleColor.Green; Console.Write("OK"); Console.ResetColor(); if (!policy) { Console.ForegroundColor = ConsoleColor.Blue; Console.WriteLine("Policy does not exists for API."); Console.ResetColor(); } else { Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine(" - Policy already set."); Console.ResetColor(); } } } else { Console.WriteLine("Incomming Request is invalid."); } }
public async Task UpgradeSwaggerApi(string aid, ApiMetadataDTO metadata) { using (var httpClient = await this._httpClientFactory.Create(UrisTemplate.GetBaseApiManagementUri(metadata.TenantName))) { httpClient.DefaultRequestHeaders.Add("If-Match", "*"); var requestParams = new Dictionary <string, string>() { { "link", metadata.SwaggerUrl } }; var content = new StringContent(JsonConvert.SerializeObject(requestParams), Encoding.UTF8, "application/vnd.swagger.link+json"); var httpResponse = await httpClient.PutAsync(UrisTemplate.GetSwaggerImportUri(aid, metadata.AzureApiVersion), content); httpResponse.EnsureSuccessStatusCode(); } }
public async Task <AsociatedApi> GetAsociatedApi(ApiMetadataDTO metadata) { using (var httpClient = await this._httpClientFactory.Create(UrisTemplate.GetBaseApiManagementUri(metadata.TenantName))) { var httpResponse = await httpClient.GetAsync(UrisTemplate.GetAllApisUri(metadata.AzureApiVersion)).ConfigureAwait(false); httpResponse.EnsureSuccessStatusCode(); var apis = JsonConvert.DeserializeObject <ApisRootObject>( await httpResponse.Content.ReadAsStringAsync().ConfigureAwait(false) ); var apiObj = apis.value.Where(api => api.name.ToLower() == metadata.ApiName.ToLower()).FirstOrDefault(); return(new AsociatedApi(apiObj.id)); } }
public async Task <bool> GetPolicy(string aid, ApiMetadataDTO metadata) { using (var httpClient = await this._httpClientFactory.Create(UrisTemplate.GetBaseApiManagementUri(metadata.TenantName))) { var httpResponse = await httpClient.GetAsync(UrisTemplate.GetPolicyTemplate(aid, metadata.AzureApiVersion)); try { httpResponse.EnsureSuccessStatusCode(); } catch (WebException) { if (httpResponse.StatusCode == HttpStatusCode.NotFound) { return(false); } } } return(true); }