/// <summary> /// Gets the <see cref="FileTypeSettings"/> from attributes of the <see cref="BinaryFileType"/> associated with a file. /// </summary> /// <param name="binaryFile">The <see cref="BinaryFile"/>.</param> /// <returns></returns> private FileTypeSettings GetSettingsFromFileType(BinaryFile binaryFile) { var settings = new FileTypeSettings(); if (binaryFile == null || !binaryFile.BinaryFileTypeId.HasValue) { return(settings); } var binaryFileType = binaryFile.BinaryFileType; if (binaryFileType == null && binaryFile.BinaryFileTypeId.HasValue) { binaryFileType = new BinaryFileTypeService(new RockContext()).Get(binaryFile.BinaryFileTypeId.Value); } if (binaryFileType == null) { return(settings); } if (binaryFileType.Attributes == null) { binaryFileType.LoadAttributes(); } settings.ContainerName = binaryFileType.GetAttributeValue("AzureBlobContainerName"); settings.Folder = (binaryFileType.GetAttributeValue("AzureBlobContainerFolderPath") ?? string.Empty) .Replace(@"\", "/") .TrimEnd("/".ToCharArray()); return(settings); }
/// <summary> /// Get the Blob Client. /// </summary> /// <param name="binaryFile">The <see cref="BinaryFile"/>.</param> /// <returns></returns> private BlobClient GetBlobClient(BinaryFile binaryFile) { if (binaryFile == null) { return(null); } FileTypeSettings settings; if (binaryFile.StorageSettings != null && binaryFile.StorageSettings.ContainsKey("AzureBlobContainerName") && binaryFile.StorageSettings.ContainsKey("AzureBlobContainerFolderPath")) { settings = new FileTypeSettings { ContainerName = binaryFile.StorageSettings["AzureBlobContainerName"], Folder = binaryFile.StorageSettings["AzureBlobContainerFolderPath"] }; } else { settings = GetSettingsFromFileType(binaryFile); } string rawGuid = binaryFile.Guid.ToString().Replace("-", ""); string fileName = $"{rawGuid}_{binaryFile.FileName}"; string blobName = string.IsNullOrWhiteSpace(settings.Folder) ? fileName : $"{settings.Folder}/{fileName}"; var accountName = GetAttributeValue(AttributeKey.AccountName); var accountKey = GetAttributeValue(AttributeKey.AccountKey); var customDomain = GetAttributeValue(AttributeKey.CustomDomain); var containerName = settings.ContainerName.IsNotNullOrWhiteSpace() ? settings.ContainerName : GetAttributeValue(AttributeKey.DefaultContainerName); return(AzureBlobStorageClient.Instance.GetBlobClient(accountName, accountKey, customDomain, containerName, blobName)); }
public ConfigService(ILogger <ConfigService> logger, IDataService dataService, IFolderService folderService, IMemoryCache memoryCache) : base(logger, dataService, memoryCache) { fileTypeSettings = new FileTypeSettings(); this.folderService = folderService; }