static async Task ApplyACLsToSampleData(DataLakeDirectoryClient rootDirectoryClient, AppSettings settings) { Console.WriteLine("Applying Execute and Read ACLs to root directory..."); await ApplyACLsForDirectory(rootDirectoryClient, RolePermissions.Execute | RolePermissions.Read, settings); Console.WriteLine(@"Applying Execute and Read ACLs to root ""Files For Organization""..."); var filesForOrganizationClient = rootDirectoryClient.GetFileClient("Files for Organization.txt"); await ApplyACLsForFile(filesForOrganizationClient, RolePermissions.Execute | RolePermissions.Read, settings); Console.WriteLine("Applying Execute And Read ACLs to Shared Documents directory recursively..."); var sharedDocumentsDirectoryClient = rootDirectoryClient.GetSubDirectoryClient("Shared Documents"); await ApplyACLsForDirectory(sharedDocumentsDirectoryClient, RolePermissions.Execute | RolePermissions.Read, settings, recursive : true); Console.WriteLine("Applying Execute and Read ACLs to User Documents directory..."); var userDocumentsDirectoryClient = rootDirectoryClient.GetSubDirectoryClient("User Documents"); await ApplyACLsForDirectory(userDocumentsDirectoryClient, RolePermissions.Execute | RolePermissions.Read, settings); Console.WriteLine("Applying Execute and Read ACLs to Alice's document directory..."); var aliceDirectoryClient = userDocumentsDirectoryClient.GetSubDirectoryClient("Alice"); await ApplyACLsForDirectory(aliceDirectoryClient, RolePermissions.Execute | RolePermissions.Read, settings); Console.WriteLine(@"Applying Execute and Read ACLs to ""Alice.txt""..."); var aliceTxtFile = aliceDirectoryClient.GetFileClient("alice.txt"); await ApplyACLsForFile(aliceTxtFile, RolePermissions.Execute | RolePermissions.Read, settings); Console.WriteLine("Applying Execute and Read ACLs to John's document directory recursively..."); var johnDirectoryClient = userDocumentsDirectoryClient.GetSubDirectoryClient("John"); await ApplyACLsForDirectory(johnDirectoryClient, RolePermissions.Execute | RolePermissions.Read, settings, recursive : true); Console.WriteLine("Applying Execute and Read ACLs to Bob's document directory recursively..."); var bobDirectoryClient = userDocumentsDirectoryClient.GetSubDirectoryClient("Bob"); await ApplyACLsForDirectory(bobDirectoryClient, RolePermissions.Execute | RolePermissions.Read, settings, recursive : true); Console.WriteLine(@"Removing Execute and Read ACLs from ""c.txt"""); var cClient = bobDirectoryClient.GetSubDirectoryClient("Reports").GetFileClient("c.txt"); await RemoveACLsForFile(cClient, settings); Console.WriteLine(@"Removing Execute and Read ACLs from Bob's Sales directory recursively..."); var salesClient = bobDirectoryClient.GetSubDirectoryClient("Sales"); await RemoveACLsForDirectory(salesClient, settings, recursive : true); }
static async Task UploadSampleDataIfNotExistsAsync(string localDirectory, DataLakeDirectoryClient directoryClient) { // Upload all sample data files in this directory foreach (string filePath in Directory.GetFiles(localDirectory)) { string fileName = Path.GetFileName(filePath); DataLakeFileClient fileClient = directoryClient.GetFileClient(fileName); if (!await fileClient.ExistsAsync()) { await fileClient.UploadAsync(filePath); } } // Recursively create subdirectories, and upload all sample data files in those subdirectories foreach (string directory in Directory.GetDirectories(localDirectory)) { string directoryName = Path.GetFileNameWithoutExtension(directory); DataLakeDirectoryClient subDirectoryClient = directoryClient.GetSubDirectoryClient(directoryName); await subDirectoryClient.CreateIfNotExistsAsync(); await UploadSampleDataIfNotExistsAsync(directory, subDirectoryClient); } }