public static DirectoryModel CreateDirectory(ShareDirectoryClient directory) { var directoryProperties = directory.GetProperties().Value; return(new DirectoryModel { Name = directory.Name, Path = directory.Path, LastModifiedDateTime = directoryProperties.LastModified.DateTime }); }
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)); } }