tools/code/publisher/WorkspaceApiRelease.cs (52 lines of code) (raw):
using Azure.Core.Pipeline;
using common;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using System;
using System.Threading;
using System.Threading.Tasks;
namespace publisher;
public delegate ValueTask PutWorkspaceApiReleaseInApim(WorkspaceApiReleaseName name, WorkspaceApiReleaseDto dto, ApiName apiName, WorkspaceName workspaceName, CancellationToken cancellationToken);
public delegate ValueTask DeleteWorkspaceApiReleaseFromApim(WorkspaceApiReleaseName name, ApiName apiName, WorkspaceName workspaceName, CancellationToken cancellationToken);
internal static class WorkspaceApiReleaseModule
{
public static void ConfigurePutWorkspaceApiReleaseInApim(IHostApplicationBuilder builder)
{
AzureModule.ConfigureManagementServiceUri(builder);
AzureModule.ConfigureHttpPipeline(builder);
builder.Services.TryAddSingleton(GetPutWorkspaceApiReleaseInApim);
}
private static PutWorkspaceApiReleaseInApim GetPutWorkspaceApiReleaseInApim(IServiceProvider provider)
{
var serviceUri = provider.GetRequiredService<ManagementServiceUri>();
var pipeline = provider.GetRequiredService<HttpPipeline>();
var logger = provider.GetRequiredService<ILogger>();
return async (name, dto, apiName, workspaceName, cancellationToken) =>
{
logger.LogInformation("Putting API release {WorkspaceApiReleaseName} in API {ApiName} in workspace {WorkspaceName}...", name, apiName, workspaceName);
await WorkspaceApiReleaseUri.From(name, apiName, workspaceName, serviceUri)
.PutDto(dto, pipeline, cancellationToken);
};
}
public static void ConfigureDeleteWorkspaceApiReleaseFromApim(IHostApplicationBuilder builder)
{
AzureModule.ConfigureManagementServiceUri(builder);
AzureModule.ConfigureHttpPipeline(builder);
builder.Services.TryAddSingleton(GetDeleteWorkspaceApiReleaseFromApim);
}
private static DeleteWorkspaceApiReleaseFromApim GetDeleteWorkspaceApiReleaseFromApim(IServiceProvider provider)
{
var serviceUri = provider.GetRequiredService<ManagementServiceUri>();
var pipeline = provider.GetRequiredService<HttpPipeline>();
var logger = provider.GetRequiredService<ILogger>();
return async (name, apiName, workspaceName, cancellationToken) =>
{
logger.LogInformation("Deleting API release {WorkspaceApiReleaseName} from API {ApiName} in workspace {WorkspaceName}...", name, apiName, workspaceName);
logger.LogInformation("Deleting API release {WorkspaceApiReleaseName} from API {ApiName} in workspace {WorkspaceName}...", name, apiName, workspaceName);
await WorkspaceApiReleaseUri.From(name, apiName, workspaceName, serviceUri)
.Delete(pipeline, cancellationToken);
};
}
}