Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 5 additions & 6 deletions src/common/ApiSpecification.cs
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ namespace common;
public delegate ValueTask<Option<(ApiSpecification Specification, BinaryData Contents)>> GetApiSpecificationFromApim(ResourceKey resourceKey, JsonObject dto, CancellationToken cancellationToken);
public delegate ValueTask<Option<(ApiSpecification Specification, BinaryData Contents)>> GetApiSpecificationFromFile(ResourceKey resourceKey, ReadFile readFile, CancellationToken cancellationToken);
public delegate ValueTask WriteApiSpecificationFile(ResourceKey resourceKey, ApiSpecification specification, BinaryData contents, CancellationToken cancellationToken);
public delegate ValueTask PutApiSpecificationInApim(ResourceKey resourceKey, ApiSpecification specification, BinaryData contents, CancellationToken cancellationToken);
public delegate ValueTask PutApiSpecificationInApim(ResourceKey resourceKey, JsonObject baseDto, ApiSpecification specification, BinaryData contents, CancellationToken cancellationToken);

public abstract record ApiSpecification
{
Expand Down Expand Up @@ -547,7 +547,7 @@ private static PutApiSpecificationInApim ResolvePutApiSpecificationInApim(IServi
var resource = ApiResource.Instance;
var ancestors = ParentChain.Empty;

return async (resourceKey, specification, contents, cancellationToken) =>
return async (resourceKey, baseDto, specification, contents, cancellationToken) =>
{
if (resourceKey.Resource is not ApiResource and not WorkspaceApiResource)
{
Expand All @@ -556,18 +556,17 @@ private static PutApiSpecificationInApim ResolvePutApiSpecificationInApim(IServi

await (specification switch
{
ApiSpecification.OpenApi openApiSpecification => putOpenApiSpecification(resourceKey, openApiSpecification, contents, cancellationToken),
ApiSpecification.OpenApi openApiSpecification => putOpenApiSpecification(resourceKey, baseDto, openApiSpecification, contents, cancellationToken),
ApiSpecification.Wadl wadlSpecification => putWadlSpecification(resourceKey, wadlSpecification, contents, cancellationToken),
ApiSpecification.Wsdl wsdlSpecification => putWsdlSpecification(resourceKey, wsdlSpecification, contents, cancellationToken),
ApiSpecification.GraphQl graphQlSpecification => putGraphQlSpecification(resourceKey, graphQlSpecification, contents, cancellationToken),
_ => throw new InvalidOperationException($"Specification {specification} is not supported.")
});
};

async ValueTask putOpenApiSpecification(ResourceKey resourceKey, ApiSpecification.OpenApi specification, BinaryData contents, CancellationToken cancellationToken)
async ValueTask putOpenApiSpecification(ResourceKey resourceKey, JsonObject baseDto, ApiSpecification.OpenApi specification, BinaryData contents, CancellationToken cancellationToken)
{
var resource = (IResourceWithDto)resourceKey.Resource;
var dto = await getDto(resource, resourceKey.Name, resourceKey.Parents, cancellationToken);
var dto = baseDto.DeepClone().AsObject();

dto = dto.MergeWith(new JsonObject
{
Expand Down
4 changes: 2 additions & 2 deletions src/integration.tests/Apim.cs
Original file line number Diff line number Diff line change
Expand Up @@ -231,7 +231,7 @@ async ValueTask putResourceGroup(IGrouping<IResource, ITestModel> group, Cancell
await specificationOption.IterTask(async tuple =>
{
var (specification, contents) = tuple;
await putApiSpecification(model.Key, specification, contents, cancellationToken);
await putApiSpecification(model.Key, model.ToDto(), specification, contents, cancellationToken);
});
}, maxDegreeOfParallelism: Option.None, cancellationToken), cancellationToken),
IResourceWithDto resourceWithDto =>
Expand All @@ -244,4 +244,4 @@ await specificationOption.IterTask(async tuple =>
});
}
}
}
}
4 changes: 2 additions & 2 deletions src/publisher.tests/Api.cs
Original file line number Diff line number Diff line change
Expand Up @@ -254,7 +254,7 @@ from specificationContents in Gen.Select(Generator.ApiSpecification, Generator.B
await ValueTask.CompletedTask;
return specificationContents;
},
PutApiSpecificationInApim = async (_, _, _, _) =>
PutApiSpecificationInApim = async (_, _, _, _, _) =>
{
await ValueTask.CompletedTask;
}
Expand Down Expand Up @@ -435,4 +435,4 @@ from dtoOption in Generator.JsonObject.OptionOf()
}
};
}
}
}
4 changes: 2 additions & 2 deletions src/publisher.tests/WorkspaceApi.cs
Original file line number Diff line number Diff line change
Expand Up @@ -251,7 +251,7 @@ from specificationContents in Gen.Select(Generator.ApiSpecification, Generator.B
await ValueTask.CompletedTask;
return specificationContents;
},
PutApiSpecificationInApim = async (_, _, _, _) =>
PutApiSpecificationInApim = async (_, _, _, _, _) =>
{
await ValueTask.CompletedTask;
}
Expand Down Expand Up @@ -429,4 +429,4 @@ from dtoOption in Generator.JsonObject.OptionOf()
}
};
}
}
}
14 changes: 7 additions & 7 deletions src/publisher/Api.cs
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ async ValueTask putApi(ResourceName name, JsonObject dto, CancellationToken canc

await putResourceInApim(resource, name, dto, parents, cancellationToken);

await putSpecification(name, cancellationToken);
await putSpecification(name, dto, cancellationToken);
}


Expand Down Expand Up @@ -128,14 +128,14 @@ async ValueTask makeApiCurrent(ResourceName name, CancellationToken cancellation
await deleteResourceFromApim(releaseResourceKey, ignoreNotFound: true, waitForCompletion: true, cancellationToken);
}

async ValueTask putSpecification(ResourceName name, CancellationToken cancellationToken)
async ValueTask putSpecification(ResourceName name, JsonObject dto, CancellationToken cancellationToken)
{
var resourceKey = ResourceKey.From(resource, name, parents);
var fileOperations = getCurrentFileOperations();

var specificationOption = await getSpecification(resourceKey, fileOperations.ReadFile, cancellationToken);

await specificationOption.IterTask(async specification => await putSpecificationInApim(resourceKey, specification.Specification, specification.Contents, cancellationToken));
await specificationOption.IterTask(async specification => await putSpecificationInApim(resourceKey, dto, specification.Specification, specification.Contents, cancellationToken));
}
}

Expand Down Expand Up @@ -251,7 +251,7 @@ internal static PutWorkspaceApi ResolvePutWorkspaceApi(IServiceProvider provider

await putResourceInApim(resource, name, dto, parents, cancellationToken);

await putSpecification(resourceKey, cancellationToken);
await putSpecification(resourceKey, dto, cancellationToken);
};

async ValueTask setCurrentRevision(ResourceKey resourceKey, JsonObject dto, CancellationToken cancellationToken)
Expand Down Expand Up @@ -294,14 +294,14 @@ async ValueTask<int> getApimRevision(ResourceKey resourceKey, CancellationToken
return GetWorkspaceApiRevisionFromDto(dtoJson);
}

async ValueTask putSpecification(ResourceKey resourceKey, CancellationToken cancellationToken)
async ValueTask putSpecification(ResourceKey resourceKey, JsonObject dto, CancellationToken cancellationToken)
{
var fileOperations = getCurrentFileOperations();

var specificationOption = await getSpecification(resourceKey, fileOperations.ReadFile, cancellationToken);

await specificationOption.IterTask(async specification =>
await putSpecificationInApim(resourceKey, specification.Specification, specification.Contents, cancellationToken));
await putSpecificationInApim(resourceKey, dto, specification.Specification, specification.Contents, cancellationToken));
}

async ValueTask makeApiCurrent(ParentChain parents, ResourceName revisionedName, CancellationToken cancellationToken)
Expand Down Expand Up @@ -402,4 +402,4 @@ async ValueTask<Option<int>> getCurrentRevision(ResourceKey resourceKey, Cancell
})).WithCancellation(cancellationToken);
}
}
}
}