Webapp/SDAF/Services/TableStorageService.cs (61 lines of code) (raw):

// Copyright (c) Microsoft Corporation. // Licensed under the MIT License. using SDAFWebApp.Models; using Azure.Data.Tables; using Azure.Identity; using Azure.Storage.Blobs; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Options; using System; using System.Threading.Tasks; namespace SDAFWebApp.Services { public class TableStorageService { private readonly IConfiguration _configuration; private readonly IDatabaseSettings _settings; public TableStorageService(IConfiguration configuration, IDatabaseSettings settings) { _configuration = configuration; _settings = settings; } public async Task<TableClient> GetTableClient(string table) { string devops_authentication = Environment.GetEnvironmentVariable("AUTHENTICATION_TYPE"); string accountName = _configuration.GetConnectionString(_settings.ConnectionStringKey).Replace("blob", "table").Replace(".privatelink", ""); DefaultAzureCredential creds = new DefaultAzureCredential(new DefaultAzureCredentialOptions { TenantId = Environment.GetEnvironmentVariable("AZURE_TENANT_ID"), ManagedIdentityClientId = Environment.GetEnvironmentVariable("OVERRIDE_USE_MI_FIC_ASSERTION_CLIENTID") }); if (devops_authentication == "PAT") { creds = new DefaultAzureCredential(); } TableServiceClient serviceClient = new( new Uri(accountName), creds ); var tableClient = serviceClient.GetTableClient(table); await tableClient.CreateIfNotExistsAsync(); return tableClient; } public async Task<BlobContainerClient> GetBlobClient(string container) { string accountName = _configuration.GetConnectionString(_settings.ConnectionStringKey); string devops_authentication = Environment.GetEnvironmentVariable("AUTHENTICATION_TYPE"); DefaultAzureCredential creds = new DefaultAzureCredential(new DefaultAzureCredentialOptions { TenantId = Environment.GetEnvironmentVariable("AZURE_TENANT_ID"), ManagedIdentityClientId = Environment.GetEnvironmentVariable("OVERRIDE_USE_MI_FIC_ASSERTION_CLIENTID") }); if (devops_authentication == "PAT") { creds = new DefaultAzureCredential(); } BlobServiceClient serviceClient = new( new Uri(accountName), creds); var blobClient = serviceClient.GetBlobContainerClient(container); await blobClient.CreateIfNotExistsAsync(); return blobClient; } } }