/// <summary> /// Get directory properties /// </summary> /// <param name="shareServiceClient"></param> /// <returns></returns> private static async Task DirectoryPropertiesSample(ShareServiceClient shareServiceClient) { Console.WriteLine(); // Create the share name -- use a guid in the name so it's unique. string shareName = "demotest-" + Guid.NewGuid(); ShareClient shareClient = shareServiceClient.GetShareClient(shareName); try { // Create share Console.WriteLine("Create Share"); await shareClient.CreateIfNotExistsAsync(); // Create directory Console.WriteLine("Create directory"); ShareDirectoryClient rootDirectory = shareClient.GetRootDirectoryClient(); // Fetch directory attributes ShareDirectoryProperties shareDirectoryProperties = await rootDirectory.GetPropertiesAsync(); Console.WriteLine("Get directory properties:"); Console.WriteLine(" ETag: {0}", shareDirectoryProperties.ETag); Console.WriteLine(" Last modified: {0}", shareDirectoryProperties.LastModified); } catch (RequestFailedException exRequest) { Common.WriteException(exRequest); Console.WriteLine( "Please make sure your storage account is specified correctly in the app.config - then restart the sample."); Console.WriteLine("Press any key to exit"); Console.ReadLine(); throw; } catch (Exception ex) { Console.WriteLine(" Exception thrown creating share."); Common.WriteException(ex); throw; } finally { // Delete share Console.WriteLine("Delete share"); await shareClient.DeleteIfExistsAsync(); } Console.WriteLine(); }
/// <summary> /// Manage share metadata /// </summary> /// <param name="shareServiceClient"></param> /// <returns></returns> private static async Task DirectoryMetadataSample(ShareServiceClient shareServiceClient) { Console.WriteLine(); // Create the share name -- use a GUID in the name so it's unique. string shareName = "demotest-" + Guid.NewGuid(); ShareClient shareClient = shareServiceClient.GetShareClient(shareName); try { // Create share Console.WriteLine("Create Share"); await shareClient.CreateIfNotExistsAsync(); ShareDirectoryClient rootDirectory = shareClient.GetRootDirectoryClient(); Console.WriteLine("Create the directory"); // Get a directory client ShareDirectoryClient sampleDirectory = rootDirectory.GetSubdirectoryClient("sample-directory"); await sampleDirectory.CreateIfNotExistsAsync(); // Set directory metadata Console.WriteLine("Set directory metadata"); var metadata = new Dictionary <string, string> { { "key1", "value1" }, { "key2", "value2" } }; await sampleDirectory.SetMetadataAsync(metadata); // Fetch directory attributes ShareDirectoryProperties shareDirectoryProperties = await sampleDirectory.GetPropertiesAsync(); Console.WriteLine("Get directory metadata:"); foreach (var keyValue in shareDirectoryProperties.Metadata) { Console.WriteLine(" {0}: {1}", keyValue.Key, keyValue.Value); } Console.WriteLine(); } catch (RequestFailedException exRequest) { Common.WriteException(exRequest); Console.WriteLine( "Please make sure your storage account is specified correctly in the app.config - then restart the sample."); Console.WriteLine("Press any key to exit"); Console.ReadLine(); throw; } catch (Exception ex) { Console.WriteLine(" Exception thrown creating share."); Common.WriteException(ex); throw; } finally { // Delete share Console.WriteLine("Delete share"); await shareClient.DeleteIfExistsAsync(); } }
/// <summary> /// Azure storage file constructor from Track2 get file properties output /// </summary> /// <param name="file">Cloud file object</param> public AzureStorageFileDirectory(ShareDirectoryClient shareDirectoryClient, AzureStorageContext storageContext, ShareDirectoryProperties shareDirectoryProperties = null, ShareClientOptions clientOptions = null) { Name = shareDirectoryClient.Name; this.privateFileDirClient = shareDirectoryClient; CloudFileDirectory = GetTrack1FileDirClient(shareDirectoryClient, storageContext.StorageAccount.Credentials); if (shareDirectoryProperties != null) { privateFileDirProperties = shareDirectoryProperties; LastModified = shareDirectoryProperties.LastModified; } Context = storageContext; shareClientOptions = clientOptions; }
public override void ExecuteCmdlet() { CloudFileDirectory baseDirectory; switch (this.ParameterSetName) { case Constants.DirectoryParameterSetName: baseDirectory = this.Directory; break; case Constants.ShareNameParameterSetName: baseDirectory = this.BuildFileShareObjectFromName(this.ShareName).GetRootDirectoryReference(); break; case Constants.ShareParameterSetName: baseDirectory = this.Share.GetRootDirectoryReference(); break; default: throw new PSArgumentException(string.Format(CultureInfo.InvariantCulture, "Invalid parameter set name: {0}", this.ParameterSetName)); } // when only track1 object input, will miss storage context, so need to build storage context for prepare the output object. if (this.Context == null) { this.Context = GetStorageContextFromTrack1FileServiceClient(baseDirectory.ServiceClient, DefaultContext); } ShareDirectoryClient baseDirClient = AzureStorageFileDirectory.GetTrack2FileDirClient(baseDirectory, ClientOptions); if (string.IsNullOrEmpty(this.Path)) { ShareDirectoryGetFilesAndDirectoriesOptions listFileOptions = new ShareDirectoryGetFilesAndDirectoriesOptions(); if (!this.ExcludeExtendedInfo.IsPresent) { listFileOptions.Traits = ShareFileTraits.All; listFileOptions.IncludeExtendedInfo = true; } Pageable <ShareFileItem> fileItems = baseDirClient.GetFilesAndDirectories(listFileOptions, this.CmdletCancellationToken); IEnumerable <Page <ShareFileItem> > fileitempages = fileItems.AsPages(); foreach (var page in fileitempages) { foreach (var file in page.Values) { if (!file.IsDirectory) // is file { ShareFileClient shareFileClient = baseDirClient.GetFileClient(file.Name); WriteObject(new AzureStorageFile(shareFileClient, (AzureStorageContext)this.Context, file, ClientOptions)); } else // Dir { ShareDirectoryClient shareDirClient = baseDirClient.GetSubdirectoryClient(file.Name); WriteObject(new AzureStorageFileDirectory(shareDirClient, (AzureStorageContext)this.Context, file, ClientOptions)); } } } } else { if (ExcludeExtendedInfo.IsPresent) { WriteWarning("'-ExcludeExtendedInfo' will be omit, it only works when list file and directory without '-Path'."); } bool foundAFolder = true; ShareDirectoryClient targetDir = baseDirClient.GetSubdirectoryClient(this.Path); ShareDirectoryProperties dirProperties = null; try { dirProperties = targetDir.GetProperties(this.CmdletCancellationToken).Value; } catch (global::Azure.RequestFailedException e) when(e.Status == 404) { foundAFolder = false; } if (foundAFolder) { WriteObject(new AzureStorageFileDirectory(targetDir, (AzureStorageContext)this.Context, dirProperties)); return; } ShareFileClient targetFile = baseDirClient.GetFileClient(this.Path); ShareFileProperties fileProperties = targetFile.GetProperties(this.CmdletCancellationToken).Value; WriteObject(new AzureStorageFile(targetFile, (AzureStorageContext)this.Context, fileProperties, ClientOptions)); } }