in tools/code/publisher/WorkspaceApi.cs [514:545]
private static PutWorkspaceApiInApim GetPutWorkspaceApiInApim(IServiceProvider provider)
{
var serviceUri = provider.GetRequiredService<ManagementServiceUri>();
var pipeline = provider.GetRequiredService<HttpPipeline>();
var logger = provider.GetRequiredService<ILogger>();
return async (name, dto, graphQlSpecificationContentsOption, workspaceName, cancellationToken) =>
{
logger.LogInformation("Adding API {ApiName} to workspace {WorkspaceName}...", name, workspaceName);
var revisionNumber = Common.GetRevisionNumber(dto);
var uri = getRevisionedUri(name, workspaceName, revisionNumber);
// APIM sometimes fails revisions if isCurrent is set to true.
var dtoWithoutIsCurrent = dto with { Properties = dto.Properties with { IsCurrent = null } };
await uri.PutDto(dtoWithoutIsCurrent, pipeline, cancellationToken);
// Put GraphQl schema
await graphQlSpecificationContentsOption.IterTask(async graphQlSpecificationContents =>
{
var (_, contents) = graphQlSpecificationContents;
await uri.PutGraphQlSchema(contents, pipeline, cancellationToken);
});
};
WorkspaceApiUri getRevisionedUri(ApiName name, WorkspaceName workspaceName, ApiRevisionNumber revisionNumber)
{
var revisionedApiName = ApiName.GetRevisionedName(name, revisionNumber);
return WorkspaceApiUri.From(revisionedApiName, workspaceName, serviceUri);
}
}