// </Snippet_GetContainer> #endregion #region create a directory // --------------------------------------------------------- // Create directory //---------------------------------------------------------- // <Snippet_CreateDirectory> public async Task <DataLakeDirectoryClient> CreateDirectory (DataLakeServiceClient serviceClient, string fileSystemName) { DataLakeFileSystemClient fileSystemClient = serviceClient.GetFileSystemClient(fileSystemName); DataLakeDirectoryClient directoryClient = await fileSystemClient.CreateDirectoryAsync("my-directory"); return(await directoryClient.CreateSubDirectoryAsync("my-subdirectory")); }
public async Task DataLakeSasBuilder_DirectoryDepth_Exists() { // Arrange DataLakeServiceClient oauthService = GetServiceClient_OAuth(); string fileSystemName = GetNewFileSystemName(); await using DisposingFileSystem test = await GetNewFileSystem(service : oauthService, fileSystemName : fileSystemName); DataLakeDirectoryClient directory = await test.FileSystem.CreateDirectoryAsync(GetNewDirectoryName()); DataLakeDirectoryClient subdirectory = await directory.CreateSubDirectoryAsync(GetNewDirectoryName()); DataLakeDirectoryClient subdirectory2 = await subdirectory.CreateSubDirectoryAsync(GetNewDirectoryName()); DataLakeDirectoryClient subdirectory3 = await subdirectory2.CreateSubDirectoryAsync(GetNewDirectoryName()); DataLakeFileClient file = await subdirectory3.CreateFileAsync(GetNewFileName()); Response <UserDelegationKey> userDelegationKey = await oauthService.GetUserDelegationKeyAsync( startsOn : null, expiresOn : Recording.UtcNow.AddHours(1)); DataLakeSasBuilder dataLakeSasBuilder = new DataLakeSasBuilder { StartsOn = Recording.UtcNow.AddHours(-1), ExpiresOn = Recording.UtcNow.AddHours(1), FileSystemName = test.FileSystem.Name, Path = subdirectory3.Path, IsDirectory = true }; dataLakeSasBuilder.SetPermissions(DataLakeSasPermissions.All); DataLakeUriBuilder dataLakeUriBuilder = new DataLakeUriBuilder(subdirectory3.Uri) { Sas = dataLakeSasBuilder.ToSasQueryParameters(userDelegationKey, test.FileSystem.AccountName) }; DataLakeDirectoryClient sasDirectoryClient = InstrumentClient(new DataLakeDirectoryClient(dataLakeUriBuilder.ToUri(), GetOptions())); // Act await sasDirectoryClient.ExistsAsync(); }
public async Task DataLakeSasBuilder_DirectoryDepth_SharedKey() { // Arrange DataLakeServiceClient oauthService = GetServiceClient_OAuth(); string fileSystemName = GetNewFileSystemName(); await using DisposingFileSystem test = await GetNewFileSystem(service : oauthService, fileSystemName : fileSystemName); DataLakeDirectoryClient directory = await test.FileSystem.CreateDirectoryAsync(GetNewDirectoryName()); DataLakeDirectoryClient subdirectory = await directory.CreateSubDirectoryAsync(GetNewDirectoryName()); DataLakeDirectoryClient subdirectory2 = await subdirectory.CreateSubDirectoryAsync(GetNewDirectoryName()); DataLakeDirectoryClient subdirectory3 = await subdirectory2.CreateSubDirectoryAsync(GetNewDirectoryName()); DataLakeFileClient file = await subdirectory3.CreateFileAsync(GetNewFileName()); DataLakeSasBuilder dataLakeSasBuilder = new DataLakeSasBuilder { StartsOn = Recording.UtcNow.AddHours(-1), ExpiresOn = Recording.UtcNow.AddHours(1), FileSystemName = test.FileSystem.Name, Path = subdirectory3.Path, IsDirectory = true }; dataLakeSasBuilder.SetPermissions(DataLakeSasPermissions.All); StorageSharedKeyCredential sharedKeyCredential = new StorageSharedKeyCredential(TestConfigHierarchicalNamespace.AccountName, TestConfigHierarchicalNamespace.AccountKey); DataLakeUriBuilder dataLakeUriBuilder = new DataLakeUriBuilder(subdirectory3.Uri) { Sas = dataLakeSasBuilder.ToSasQueryParameters(sharedKeyCredential) }; DataLakeDirectoryClient sasDirectoryClient = InstrumentClient(new DataLakeDirectoryClient(dataLakeUriBuilder.ToUri(), GetOptions())); // Act await sasDirectoryClient.ExistsAsync(); }
public async Task TraverseAsync() { // Create a temporary Lorem Ipsum file on disk that we can upload string originalPath = CreateTempFile(SampleFileContent); // Make StorageSharedKeyCredential to pass to the serviceClient string storageAccountName = StorageAccountName; string storageAccountKey = StorageAccountKey; Uri serviceUri = StorageAccountBlobUri; StorageSharedKeyCredential sharedKeyCredential = new StorageSharedKeyCredential(storageAccountName, storageAccountKey); // Create DataLakeServiceClient using StorageSharedKeyCredentials DataLakeServiceClient serviceClient = new DataLakeServiceClient(serviceUri, sharedKeyCredential); // Get a reference to a filesystem named "sample-filesystem-traverseasync" and then create it DataLakeFileSystemClient filesystem = serviceClient.GetFileSystemClient(Randomize("sample-filesystem-traverse")); await filesystem.CreateAsync(); try { // Create a bunch of directories and files within the directories DataLakeDirectoryClient first = await filesystem.CreateDirectoryAsync("first"); await first.CreateSubDirectoryAsync("a"); await first.CreateSubDirectoryAsync("b"); DataLakeDirectoryClient second = await filesystem.CreateDirectoryAsync("second"); await second.CreateSubDirectoryAsync("c"); await second.CreateSubDirectoryAsync("d"); await filesystem.CreateDirectoryAsync("third"); DataLakeDirectoryClient fourth = await filesystem.CreateDirectoryAsync("fourth"); DataLakeDirectoryClient deepest = await fourth.CreateSubDirectoryAsync("e"); // Upload a DataLake file named "file" DataLakeFileClient file = deepest.GetFileClient("file"); await file.CreateAsync(); using (FileStream stream = File.OpenRead(originalPath)) { await file.AppendAsync(stream, 0); } // Keep track of all the names we encounter List <string> names = new List <string>(); await foreach (PathItem pathItem in filesystem.GetPathsAsync(recursive: true)) { names.Add(pathItem.Name); } // Verify we've seen everything Assert.AreEqual(10, names.Count); Assert.Contains("first", names); Assert.Contains("second", names); Assert.Contains("third", names); Assert.Contains("fourth", names); Assert.Contains("first/a", names); Assert.Contains("first/b", names); Assert.Contains("second/c", names); Assert.Contains("second/d", names); Assert.Contains("fourth/e", names); Assert.Contains("fourth/e/file", names); } finally { // Clean up after the test when we're finished await filesystem.DeleteAsync(); } }