csharp/Microsoft.Azure.Databricks.Client/UnityCatalog/ExternalLocationsApiClient.cs (65 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 ExternalLocationsApiClient : ApiClient, IExternalLocationsApi { private string ExternalLocationsApiUri => $"{BaseUnityCatalogUri}/external-locations"; public ExternalLocationsApiClient(HttpClient httpClient) : base(httpClient) { } public async Task<IEnumerable<ExternalLocation>> List(CancellationToken cancellationToken = default) { var externalLocationsList = await HttpGet<JsonObject>(HttpClient, this.ExternalLocationsApiUri, cancellationToken).ConfigureAwait(false); externalLocationsList.TryGetPropertyValue("external_locations", out var externalLocations); return externalLocations?.Deserialize<IEnumerable<ExternalLocation>>(Options) ?? Enumerable.Empty<ExternalLocation>(); } public async Task<ExternalLocation> Create( ExternalLocationAttributes attributes, bool skipValidation = default, CancellationToken cancellationToken = default) { var request = JsonSerializer.SerializeToNode(attributes)!.AsObject(); request.Add("skip_validation", skipValidation); return await HttpPost<JsonObject, ExternalLocation>(HttpClient, this.ExternalLocationsApiUri, request, cancellationToken).ConfigureAwait(false); } public async Task<ExternalLocation> Get(string name, CancellationToken cancellationToken = default) { var requestUri = $"{this.ExternalLocationsApiUri}/{name}"; return await HttpGet<ExternalLocation>(HttpClient, requestUri, cancellationToken).ConfigureAwait(false); } public async Task<ExternalLocation> Update( string externalLocationName, string newName = default, string url = default, string credentialName = default, bool? readOnly = default, string comment = default, string owner = default, bool? force = default, CancellationToken cancellationToken = default) { var requestUri = $"{this.ExternalLocationsApiUri}/{externalLocationName}"; var request = new { name = newName, url, credential_name = credentialName, read_only = readOnly, comment, owner, force }; return await HttpPatch<dynamic, ExternalLocation>(HttpClient, requestUri, request, cancellationToken).ConfigureAwait(false); } public async Task Delete(string name, CancellationToken cancellationToken = default) { var requestUri = $"{this.ExternalLocationsApiUri}/{name}"; await HttpDelete(HttpClient, requestUri, cancellationToken).ConfigureAwait(false); } }