csharp/Microsoft.Azure.Databricks.Client/UnityCatalog/FunctionsApiClient.cs (47 lines of code) (raw):
using Microsoft.Azure.Databricks.Client.Models.UnityCatalog;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Text.Json;
using System.Text.Json.Nodes;
using System.Threading;
using System.Threading.Tasks;
namespace Microsoft.Azure.Databricks.Client.UnityCatalog;
public class FunctionsApiClient : ApiClient, IFunctionsApi
{
private string FunctionsApiUrl => $"{BaseUnityCatalogUri}/functions";
public FunctionsApiClient(HttpClient httpClient) : base(httpClient)
{
}
public async Task<IEnumerable<Function>> List(CancellationToken cancellationToken = default)
{
var functionsList = await HttpGet<JsonObject>(HttpClient, this.FunctionsApiUrl, cancellationToken).ConfigureAwait(false);
functionsList.TryGetPropertyValue("functions", out var functions);
return functions?.Deserialize<IEnumerable<Function>>(Options) ?? Enumerable.Empty<Function>();
}
public async Task<Function> Create(
Function newFunction,
CancellationToken cancellationToken = default)
{
return await HttpPost<Function, Function>(HttpClient, this.FunctionsApiUrl, newFunction, cancellationToken).ConfigureAwait(false);
}
public async Task<Function> Get(string name, CancellationToken cancellationToken = default)
{
var requestUri = $"{this.FunctionsApiUrl}/{name}";
return await HttpGet<Function>(HttpClient, requestUri, cancellationToken).ConfigureAwait(false);
}
public async Task<Function> Update(
string functionName,
string owner,
CancellationToken cancellationToken = default)
{
var requestUri = $"{this.FunctionsApiUrl}/{functionName}";
var request = new { owner };
return await HttpPatch<dynamic, Function>(HttpClient, requestUri, request, cancellationToken).ConfigureAwait(false);
}
public async Task Delete(string name, CancellationToken cancellationToken = default)
{
var requestUri = $"{this.FunctionsApiUrl}/{name}";
await HttpDelete(HttpClient, requestUri, cancellationToken).ConfigureAwait(false);
}
}