public async Task <Container> GetContainer(GetContainerParameters getContainerParameters) { var container = GetContainerReference(getContainerParameters); await container.CreateIfNotExistsAsync(); await container.FetchAttributesAsync(); return(new Container(container)); }
public async Task <Transfer?> GetTransfer(GetTransferParameters getTransferParameters) { var(transferToken, files, fields, containerUrl, accessTokenResult) = getTransferParameters; var(region, codename, _) = storageRepository.DecryptTransferToken(transferToken); var transferItem = await kontentRepository.GetKontentItem <TransferItem>(new GetKontentParameters { Codename = codename }); if (transferItem == default) { return(null); } var getContainerParameters = new GetContainerParameters { ContainerName = storageRepository.GetSafeContainerName(codename) }; var container = await storageRepository.GetContainer(getContainerParameters); return((files, fields, containerUrl, accessTokenResult) switch { (false, true, true, _)when accessTokenResult is NoAccessTokenResult => new Transfer { Region = coreContext.Region.Name, Name = transferItem.System.Name, Customer = transferItem.GetInfo().Customer, ContainerUrl = storageRepository.GetPublicContainerUrl(getContainerParameters), Fields = transferItem.GetFields(container.CompletedFields) }, (false, true, true, _)when accessTokenResult is ValidAccessTokenResult => new Transfer { Region = coreContext.Region.Name, Name = transferItem.System.Name, Codename = transferItem.System.Codename, Customer = transferItem.GetInfo().Customer, ContainerUrl = storageRepository.GetAdminContainerUrl(getContainerParameters), Fields = transferItem.GetFields(container.CompletedFields) }, (true, false, false, _)when accessTokenResult is ValidAccessTokenResult => new Transfer { Region = region, Name = transferItem.System.Name, Customer = transferItem.GetInfo().Customer, Files = await storageRepository.GetContainerFiles(new GetContainerParameters { ContainerName = storageRepository.GetSafeContainerName(codename) }) }, _ => throw new ArgumentException($"Combination of files ({files}), fields ({fields}), containerUrl ({containerUrl}), and accessTokenResult ({accessTokenResult?.GetType().Name}) is not valid.") });
public async Task <IDictionary <string, File> > GetContainerFiles(GetContainerParameters getContainerParameters) { var container = GetContainerReference(getContainerParameters); IDictionary <string, File> files = new Dictionary <string, File>(); BlobContinuationToken?continuationToken = default; do { BlobResultSegment resultSegment = await container .ListBlobsSegmentedAsync(string.Empty, true, BlobListingDetails.None, default, continuationToken, default, default);