Skip to content

Commit

Permalink
Fixes for issues noticed integrating with https://github.com/anthony-…
Browse files Browse the repository at this point in the history
  • Loading branch information
anthony-c-martin committed Jul 5, 2024
1 parent 4b1ecf2 commit 232ef21
Showing 1 changed file with 35 additions and 12 deletions.
47 changes: 35 additions & 12 deletions src/Bicep.Local.Deploy/Extensibility/GrpcBuiltInLocalExtension.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

using System.Diagnostics;
using System.Text.Json.Nodes;
using Azure.Deployments.Extensibility.Core.V2.Json;
using Bicep.Local.Extension.Rpc;
using Google.Protobuf.Collections;
using Json.Pointer;
Expand Down Expand Up @@ -88,23 +89,45 @@ public override async Task<LocalExtensibilityOperationResponse> Preview(Extensib
=> Convert(await client.PreviewAsync(Convert(request), cancellationToken: cancellationToken));

private static Rpc.ResourceReference Convert(ExtensibilityV2.ResourceReference request)
=> new()
{
Rpc.ResourceReference output = new()
{
ApiVersion = request.ApiVersion,
Config = request.Config.ToJson(),
Identifiers = request.Identifiers.ToJson(),
Type = request.Type
Type = request.Type,
Identifiers = request.Identifiers.ToJsonString(),
};

if (request.ApiVersion is {})
{
output.ApiVersion = request.ApiVersion;
}
if (request.Config is {})
{
output.Config = request.Config.ToJsonString();
}

return output;
}

private static Rpc.ResourceSpecification Convert(ExtensibilityV2.ResourceSpecification request)
=> new()
{
Rpc.ResourceSpecification output = new()
{
ApiVersion = request.ApiVersion,
Config = request.Config.ToJson(),
Properties = request.Properties.ToJson(),
Type = request.Type
Type = request.Type,
Properties = request.Properties.ToJsonString(),
};

if (request.ApiVersion is {})
{
output.ApiVersion = request.ApiVersion;
}
if (request.Config is {})
{
output.Config = request.Config.ToJsonString();
}

return output;
}

private static ExtensibilityV2.ErrorData Convert(Rpc.ErrorData errorData)
=> new(new ExtensibilityV2.Error(errorData.Error.Code, errorData.Error.Message, JsonPointer.Empty, Convert(errorData.Error.Details), ConvertInnerError(errorData.Error.InnerError)));

Expand All @@ -116,8 +139,8 @@ private static ExtensibilityV2.ErrorDetail Convert(Rpc.ErrorDetail detail)

private static LocalExtensibilityOperationResponse Convert(Rpc.LocalExtensibilityOperationResponse response)
=> new(
new ExtensibilityV2.Resource(response.Resource.Type, response.Resource.ApiVersion, ToJsonObject(response.Resource.Identifiers, "Parsing response identifiers failed. Please ensure is non-null or empty and is a valid JSON object."), ToJsonObject(response.Resource.Properties, "Parsing response properties failed. Please ensure is non-null or empty and is ensure is a valid JSON object."), response.Resource.Status),
Convert(response.ErrorData));
response.Resource is {} ? new(response.Resource.Type, response.Resource.ApiVersion, ToJsonObject(response.Resource.Identifiers, "Parsing response identifiers failed. Please ensure is non-null or empty and is a valid JSON object."), ToJsonObject(response.Resource.Properties, "Parsing response properties failed. Please ensure is non-null or empty and is ensure is a valid JSON object."), response.Resource.Status) : null,
response.ErrorData is {} ? Convert(response.ErrorData) : null);

private static JsonObject? ConvertInnerError(string innerError)
=> innerError is null ? null : ToJsonObject(innerError, "Parsing innerError failed. Please ensure is non-null or empty and is a valid JSON object.");
Expand Down

0 comments on commit 232ef21

Please sign in to comment.