in csharp/Microsoft.Azure.Databricks.Client/Converters/AclPermissionItemConverter.cs [28:79]
public override AclPermissionItem Read(ref Utf8JsonReader reader, Type typeToConvert,
JsonSerializerOptions options)
{
var aclItemNode = JsonNode.Parse(ref reader)!.AsObject();
AclPermissionItem aclItem;
if (aclItemNode.TryGetPropertyValue("user_name", out var userName))
{
aclItem = new UserAclItem
{
Principal = userName!.GetValue<string>()
};
}
else if (aclItemNode.TryGetPropertyValue("group_name", out var groupName))
{
aclItem = new GroupAclItem
{
Principal = groupName!.GetValue<string>()
};
}
else if (aclItemNode.TryGetPropertyValue("service_principal_name", out var servicePrincipalName))
{
aclItem = new ServicePrincipalAclItem
{
Principal = servicePrincipalName!.GetValue<string>()
};
}
else
{
throw new NotImplementedException(
$"JsonConverter not implemented for node {aclItemNode.ToJsonString()}");
}
if (aclItemNode.ContainsKey("all_permissions"))
{
var permissionNode = aclItemNode["all_permissions"]![0]!.AsObject();
aclItem.PermissionLevel = permissionNode["permission_level"]!.Deserialize<PermissionLevel>(options);
aclItem.Inherited = permissionNode.TryGetPropertyValue("inherited", out var inherited) &&
inherited!.GetValue<bool>();
aclItem.InheritedFromObject =
permissionNode.TryGetPropertyValue("inherited_from_object", out var inheritedFrom)
? inheritedFrom!.Deserialize<IEnumerable<string>>(options)
: Enumerable.Empty<string>();
}
else
{
aclItem.PermissionLevel = aclItemNode["permission_level"]!.Deserialize<PermissionLevel>(options);
}
return aclItem;
}