Skip to content

Commit aa07ccc

Browse files
committed
Merge pull request Azure#1232 from wastoresh/sprint55
Add cmdlets to get/set storage file metrics
2 parents 41e91d9 + 830f961 commit aa07ccc

File tree

117 files changed

+75933
-52676
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

117 files changed

+75933
-52676
lines changed

src/Common/Commands.Common.Storage/Commands.Common.Storage.csproj

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -67,9 +67,9 @@
6767
<HintPath>..\..\packages\Microsoft.Azure.KeyVault.Core.1.0.0\lib\net40\Microsoft.Azure.KeyVault.Core.dll</HintPath>
6868
<Private>True</Private>
6969
</Reference>
70-
<Reference Include="Microsoft.Azure.Management.Storage, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
71-
<HintPath>..\..\packages\Microsoft.Azure.Management.Storage.2.4.0-preview\lib\net40\Microsoft.Azure.Management.Storage.dll</HintPath>
72-
<Private>True</Private>
70+
<Reference Include="Microsoft.Azure.Management.Storage, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
71+
<SpecificVersion>False</SpecificVersion>
72+
<HintPath>..\..\packages\Microsoft.Azure.Management.Storage.3.0.0\lib\net40\Microsoft.Azure.Management.Storage.dll</HintPath>
7373
</Reference>
7474
<Reference Include="Microsoft.Azure.ResourceManager, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
7575
<SpecificVersion>False</SpecificVersion>
@@ -118,9 +118,9 @@
118118
<Reference Include="Microsoft.WindowsAzure.Management.Storage">
119119
<HintPath>..\..\packages\Microsoft.WindowsAzure.Management.Storage.5.1.1\lib\net40\Microsoft.WindowsAzure.Management.Storage.dll</HintPath>
120120
</Reference>
121-
<Reference Include="Microsoft.WindowsAzure.Storage, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
121+
<Reference Include="Microsoft.WindowsAzure.Storage, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
122122
<SpecificVersion>False</SpecificVersion>
123-
<HintPath>..\..\packages\WindowsAzure.Storage.5.0.0\lib\net40\Microsoft.WindowsAzure.Storage.dll</HintPath>
123+
<HintPath>..\..\packages\WindowsAzure.Storage.6.0.0\lib\net40\Microsoft.WindowsAzure.Storage.dll</HintPath>
124124
</Reference>
125125
<Reference Include="Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
126126
<SpecificVersion>False</SpecificVersion>

src/Common/Commands.Common.Storage/StorageUtilities.cs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,11 +48,14 @@ public static CloudStorageAccount GenerateCloudStorageAccount(Arm.IStorageManage
4848
Uri blobEndpoint = storageServiceResponse.StorageAccount.PrimaryEndpoints.Blob;
4949
Uri queueEndpoint = storageServiceResponse.StorageAccount.PrimaryEndpoints.Queue;
5050
Uri tableEndpoint = storageServiceResponse.StorageAccount.PrimaryEndpoints.Table;
51+
Uri fileEndpoint = storageServiceResponse.StorageAccount.PrimaryEndpoints.File;
52+
5153
return new CloudStorageAccount(
5254
GenerateStorageCredentials(storageClient, resourceGroupName, accountName),
5355
blobEndpoint,
5456
queueEndpoint,
55-
tableEndpoint, null);
57+
tableEndpoint,
58+
fileEndpoint);
5659
}
5760
else
5861
{
@@ -61,8 +64,8 @@ public static CloudStorageAccount GenerateCloudStorageAccount(Arm.IStorageManage
6164
Convert.ToBase64String(Encoding.UTF8.GetBytes(Guid.NewGuid().ToString()))),
6265
new Uri(string.Format("https://{0}.blob.core.windows.net", accountName)),
6366
new Uri(string.Format("https://{0}.queue.core.windows.net", accountName)),
64-
new Uri(string.Format("https://{0}.table.core.windows.net", accountName)),
65-
null);
67+
new Uri(string.Format("https://{0}.table.core.windows.net", accountName)),
68+
new Uri(string.Format("https://{0}.file.core.windows.net", accountName)));
6669
}
6770
}
6871

src/Common/Commands.Common.Storage/packages.config

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<package id="Microsoft.Azure.Common.Dependencies" version="1.0.0" targetFramework="net45" />
77
<package id="Microsoft.Azure.KeyVault.Core" version="1.0.0" targetFramework="net45" />
88
<package id="Microsoft.Azure.Management.Resources" version="2.18.7-preview" targetFramework="net45" />
9-
<package id="Microsoft.Azure.Management.Storage" version="2.4.0-preview" targetFramework="net45" />
9+
<package id="Microsoft.Azure.Management.Storage" version="3.0.0" targetFramework="net45" />
1010
<package id="Microsoft.Bcl" version="1.1.9" targetFramework="net45" />
1111
<package id="Microsoft.Bcl.Async" version="1.0.168" targetFramework="net45" />
1212
<package id="Microsoft.Bcl.Build" version="1.0.14" targetFramework="net45" />
@@ -22,5 +22,5 @@
2222
<package id="Microsoft.WindowsAzure.Management.Storage" version="5.1.1" targetFramework="net45" />
2323
<package id="Newtonsoft.Json" version="6.0.8" targetFramework="net45" />
2424
<package id="System.Spatial" version="5.6.4" targetFramework="net45" />
25-
<package id="WindowsAzure.Storage" version="5.0.0" targetFramework="net45" />
25+
<package id="WindowsAzure.Storage" version="6.0.0" targetFramework="net45" />
2626
</packages>

src/Common/Storage/Commands.Storage.ScenarioTest/Commands.Storage.ScenarioTest.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@
8686
<HintPath>..\..\..\packages\Microsoft.WindowsAzure.ConfigurationManager.2.0.3\lib\net40\Microsoft.WindowsAzure.Configuration.dll</HintPath>
8787
</Reference>
8888
<Reference Include="Microsoft.WindowsAzure.Storage">
89-
<HintPath>..\..\..\packages\WindowsAzure.Storage.5.0.0\lib\net40\Microsoft.WindowsAzure.Storage.dll</HintPath>
89+
<HintPath>..\..\..\packages\WindowsAzure.Storage.6.0.0\lib\net40\Microsoft.WindowsAzure.Storage.dll</HintPath>
9090
</Reference>
9191
<Reference Include="Newtonsoft.Json">
9292
<HintPath>..\..\..\packages\Newtonsoft.Json.6.0.8\lib\net45\Newtonsoft.Json.dll</HintPath>

src/Common/Storage/Commands.Storage.ScenarioTest/packages.config

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,6 @@
1313
<package id="Microsoft.WindowsAzure.ConfigurationManager" version="2.0.3" targetFramework="net45" />
1414
<package id="Newtonsoft.Json" version="6.0.8" targetFramework="net45" />
1515
<package id="System.Spatial" version="5.6.4" targetFramework="net45" />
16-
<package id="WindowsAzure.Storage" version="5.0.0" targetFramework="net45" />
16+
<package id="WindowsAzure.Storage" version="6.0.0" targetFramework="net45" />
1717
<package id="xunit.runner.visualstudio" version="2.1.0-beta4-build1109" targetFramework="net45" />
1818
</packages>

src/Common/Storage/Commands.Storage.StorageTestLib/Commands.Storage.StorageTestLib.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@
6565
<HintPath>..\..\..\packages\Microsoft.WindowsAzure.ConfigurationManager.2.0.3\lib\net40\Microsoft.WindowsAzure.Configuration.dll</HintPath>
6666
</Reference>
6767
<Reference Include="Microsoft.WindowsAzure.Storage">
68-
<HintPath>..\..\..\packages\WindowsAzure.Storage.5.0.0\lib\net40\Microsoft.WindowsAzure.Storage.dll</HintPath>
68+
<HintPath>..\..\..\packages\WindowsAzure.Storage.6.0.0\lib\net40\Microsoft.WindowsAzure.Storage.dll</HintPath>
6969
</Reference>
7070
<Reference Include="Newtonsoft.Json">
7171
<HintPath>..\..\..\packages\Newtonsoft.Json.6.0.8\lib\net45\Newtonsoft.Json.dll</HintPath>

src/Common/Storage/Commands.Storage.StorageTestLib/packages.config

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,6 @@
77
<package id="Microsoft.WindowsAzure.ConfigurationManager" version="2.0.3" targetFramework="net45" />
88
<package id="Newtonsoft.Json" version="6.0.8" targetFramework="net45" />
99
<package id="System.Spatial" version="5.6.4" targetFramework="net45" />
10-
<package id="WindowsAzure.Storage" version="5.0.0" targetFramework="net45" />
10+
<package id="WindowsAzure.Storage" version="6.0.0" targetFramework="net45" />
1111
<package id="xunit.runner.visualstudio" version="2.1.0-beta4-build1109" targetFramework="net45" />
1212
</packages>

src/Common/Storage/Commands.Storage.Test/Commands.Storage.Test.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@
123123
<HintPath>..\..\..\packages\Microsoft.WindowsAzure.Management.4.1.1\lib\net40\Microsoft.WindowsAzure.Management.dll</HintPath>
124124
</Reference>
125125
<Reference Include="Microsoft.WindowsAzure.Storage">
126-
<HintPath>..\..\..\packages\WindowsAzure.Storage.5.0.0\lib\net40\Microsoft.WindowsAzure.Storage.dll</HintPath>
126+
<HintPath>..\..\..\packages\WindowsAzure.Storage.6.0.0\lib\net40\Microsoft.WindowsAzure.Storage.dll</HintPath>
127127
</Reference>
128128
<Reference Include="Microsoft.WindowsAzure.Storage.DataMovement, Version=2.4.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
129129
<SpecificVersion>False</SpecificVersion>

src/Common/Storage/Commands.Storage.Test/File/Cmdlet/GetAzureStorageFileTest.cs

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -76,33 +76,34 @@ public void GetFileFromSubDirectoryTest_UsingShareObjectWithPath()
7676
{
7777
var share = this.MockChannel.GetShareReference(ShareName);
7878
var dir = share.GetRootDirectoryReference().GetDirectoryReference("dir");
79-
var listItems = Enumerable.Range(0, 10).Select(x => dir.GetFileReference(string.Format("file{0}", x))).Cast<IListFileItem>()
80-
.Concat(Enumerable.Range(0, 5).Select(x => dir.GetDirectoryReference(string.Format("dir{0}", x)))).ToArray();
8179

82-
this.ListFilesAndAssertResults(
83-
() => this.CmdletInstance.RunCmdlet(
84-
Constants.ShareParameterSetName,
85-
new KeyValuePair<string, object>("Share", share),
86-
new KeyValuePair<string, object>("Path", dir.Name)),
87-
listItems,
88-
dir);
80+
this.MockChannel.SetsAvailableDirectories(dir.Name);
81+
82+
this.CmdletInstance.RunCmdlet(
83+
Constants.ShareNameParameterSetName,
84+
new KeyValuePair<string, object>("ShareName", ShareName),
85+
new KeyValuePair<string, object>("Path", dir.Name));
86+
87+
List<IListFileItem> fileList = new List<IListFileItem>();
88+
fileList.Add(dir);
89+
this.MockCmdRunTime.OutputPipeline.AssertListFileItems(fileList);
8990
}
9091

9192
[TestMethod]
9293
public void GetFileFromSubDirectoryTest_UsingShareNameWithPath()
9394
{
9495
var share = this.MockChannel.GetShareReference(ShareName);
9596
var dir = share.GetRootDirectoryReference().GetDirectoryReference("dir");
96-
var listItems = Enumerable.Range(0, 10).Select(x => dir.GetFileReference(string.Format("file{0}", x))).Cast<IListFileItem>()
97-
.Concat(Enumerable.Range(0, 5).Select(x => dir.GetDirectoryReference(string.Format("dir{0}", x)))).ToArray();
97+
this.MockChannel.SetsAvailableDirectories(dir.Name);
9898

99-
this.ListFilesAndAssertResults(
100-
() => this.CmdletInstance.RunCmdlet(
99+
this.CmdletInstance.RunCmdlet(
101100
Constants.ShareNameParameterSetName,
102101
new KeyValuePair<string, object>("ShareName", ShareName),
103-
new KeyValuePair<string, object>("Path", dir.Name)),
104-
listItems,
105-
dir);
102+
new KeyValuePair<string, object>("Path", dir.Name));
103+
104+
List<IListFileItem> fileList = new List<IListFileItem>();
105+
fileList.Add(dir);
106+
this.MockCmdRunTime.OutputPipeline.AssertListFileItems(fileList);
106107
}
107108

108109
[TestMethod]

src/Common/Storage/Commands.Storage.Test/Service/MockStorageFileManagement.cs

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,26 @@ public void SetSharePermissions(CloudFileShare share, FileSharePermissions permi
171171

172172
public Task FetchFileAttributesAsync(CloudFile file, AccessCondition accessCondition, FileRequestOptions options, OperationContext operationContext, CancellationToken token)
173173
{
174-
throw new NotImplementedException();
174+
if (this.availableDirectoryNames.Contains(file.Name))
175+
{
176+
return TaskEx.FromResult(true);
177+
}
178+
else
179+
{
180+
throw new MockupException("FileNotFound");
181+
}
182+
}
183+
184+
public Task FetchDirectoryAttributesAsync(CloudFileDirectory directory, AccessCondition accessCondition, FileRequestOptions options, OperationContext operationContext, CancellationToken cancellationToken)
185+
{
186+
if (this.availableDirectoryNames.Contains(directory.Name))
187+
{
188+
return TaskEx.FromResult(true);
189+
}
190+
else
191+
{
192+
throw new MockupException("DirectoryNotFound");
193+
}
175194
}
176195

177196
public Task AbortCopyAsync(CloudFile file, string copyId, AccessCondition accessCondition, FileRequestOptions requestOptions, OperationContext operationContext, CancellationToken cancellationToken)

src/Common/Storage/Commands.Storage.Test/packages.config

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,6 @@
2121
<package id="Microsoft.WindowsAzure.Management" version="4.1.1" targetFramework="net45" />
2222
<package id="Newtonsoft.Json" version="6.0.8" targetFramework="net45" />
2323
<package id="System.Spatial" version="5.6.4" targetFramework="net45" />
24-
<package id="WindowsAzure.Storage" version="5.0.0" targetFramework="net45" />
24+
<package id="WindowsAzure.Storage" version="6.0.0" targetFramework="net45" />
2525
<package id="xunit.runner.visualstudio" version="2.1.0-beta4-build1109" targetFramework="net45" />
2626
</packages>

src/Common/Storage/Commands.Storage/Commands.Storage.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,9 +111,9 @@
111111
<Reference Include="Microsoft.WindowsAzure.Management">
112112
<HintPath>..\..\..\packages\Microsoft.WindowsAzure.Management.4.1.1\lib\net40\Microsoft.WindowsAzure.Management.dll</HintPath>
113113
</Reference>
114-
<Reference Include="Microsoft.WindowsAzure.Storage, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
114+
<Reference Include="Microsoft.WindowsAzure.Storage, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
115115
<SpecificVersion>False</SpecificVersion>
116-
<HintPath>..\..\..\packages\WindowsAzure.Storage.5.0.0\lib\net40\Microsoft.WindowsAzure.Storage.dll</HintPath>
116+
<HintPath>..\..\..\packages\WindowsAzure.Storage.6.0.0\lib\net40\Microsoft.WindowsAzure.Storage.dll</HintPath>
117117
</Reference>
118118
<Reference Include="Microsoft.WindowsAzure.Storage.DataMovement">
119119
<HintPath>..\..\..\lib\Microsoft.WindowsAzure.Storage.DataMovement.dll</HintPath>

src/Common/Storage/Commands.Storage/Common/Cmdlet/GetAzureStorageServiceMetrics.cs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -47,11 +47,6 @@ public GetAzureStorageServiceMetricsCommand()
4747
[PermissionSet(SecurityAction.Demand, Name = "FullTrust")]
4848
public override void ExecuteCmdlet()
4949
{
50-
if (StorageServiceType.File == ServiceType)
51-
{
52-
throw new PSInvalidOperationException(Resources.FileNotSupportMetrics);
53-
}
54-
5550
ServiceProperties serviceProperties = Channel.GetStorageServiceProperties(ServiceType, GetRequestOptions(ServiceType) , OperationContext);
5651

5752
switch (MetricsType)

src/Common/Storage/Commands.Storage/Common/Cmdlet/SetAzureStorageServiceMetrics.cs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -120,11 +120,6 @@ internal MetricsLevel GetMetricsLevel(string MetricsLevel)
120120
[PermissionSet(SecurityAction.Demand, Name = "FullTrust")]
121121
public override void ExecuteCmdlet()
122122
{
123-
if (StorageServiceType.File == ServiceType)
124-
{
125-
throw new PSInvalidOperationException(Resources.FileNotSupportMetrics);
126-
}
127-
128123
ServiceProperties currentServiceProperties = Channel.GetStorageServiceProperties(ServiceType, GetRequestOptions(ServiceType), OperationContext);
129124
ServiceProperties serviceProperties = new ServiceProperties();
130125
serviceProperties.Clean();

src/Common/Storage/Commands.Storage/Common/StorageCloudCmdletBase.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ public virtual int? ConcurrentTaskCount
7777
}
7878
}
7979

80-
public T Channel
80+
public T Channel
8181
{
8282
get;
8383
set;

src/Common/Storage/Commands.Storage/File/Cmdlet/GetAzureStorageFile.cs

Lines changed: 61 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ namespace Microsoft.WindowsAzure.Commands.Storage.File.Cmdlet
1616
{
1717
using System.Globalization;
1818
using System.Management.Automation;
19+
using System.Net;
20+
using Microsoft.WindowsAzure.Storage;
1921
using Microsoft.WindowsAzure.Storage.File;
2022

2123
[Cmdlet(VerbsCommon.Get, Constants.FileCmdletName, DefaultParameterSetName = Constants.ShareNameParameterSetName)]
@@ -49,13 +51,12 @@ public class GetAzureStorageFile : AzureStorageFileCmdletBase
4951

5052
[Parameter(
5153
Position = 1,
52-
HelpMessage = "Path to an existing directory.")]
54+
HelpMessage = "Path to an existing file/directory.")]
5355
public string Path { get; set; }
5456

5557
public override void ExecuteCmdlet()
5658
{
5759
CloudFileDirectory baseDirectory;
58-
string[] subFolders = NamingUtil.ValidatePath(this.Path);
5960
switch (this.ParameterSetName)
6061
{
6162
case Constants.DirectoryParameterSetName:
@@ -74,15 +75,65 @@ public override void ExecuteCmdlet()
7475
throw new PSArgumentException(string.Format(CultureInfo.InvariantCulture, "Invalid parameter set name: {0}", this.ParameterSetName));
7576
}
7677

77-
this.RunTask(async (taskId) =>
78+
if (string.IsNullOrEmpty(this.Path))
7879
{
79-
await this.Channel.EnumerateFilesAndDirectoriesAsync(
80-
baseDirectory.GetDirectoryReferenceByPath(subFolders),
81-
item => this.OutputStream.WriteObject(taskId, item),
82-
this.RequestOptions,
83-
this.OperationContext,
84-
this.CmdletCancellationToken);
85-
});
80+
this.RunTask(async (taskId) =>
81+
{
82+
await this.Channel.EnumerateFilesAndDirectoriesAsync(
83+
baseDirectory,
84+
item => this.OutputStream.WriteObject(taskId, item),
85+
this.RequestOptions,
86+
this.OperationContext,
87+
this.CmdletCancellationToken);
88+
});
89+
}
90+
else
91+
{
92+
this.RunTask(async (taskId) =>
93+
{
94+
bool foundAFolder = true;
95+
string[] subfolders = NamingUtil.ValidatePath(this.Path);
96+
CloudFileDirectory targetDir = baseDirectory.GetDirectoryReferenceByPath(subfolders);
97+
98+
try
99+
{
100+
await this.Channel.FetchDirectoryAttributesAsync(
101+
targetDir,
102+
null,
103+
this.RequestOptions,
104+
this.OperationContext,
105+
this.CmdletCancellationToken);
106+
}
107+
catch (StorageException se)
108+
{
109+
if (null == se.RequestInformation
110+
|| (int)HttpStatusCode.NotFound != se.RequestInformation.HttpStatusCode)
111+
{
112+
throw;
113+
}
114+
115+
foundAFolder = false;
116+
}
117+
118+
if (foundAFolder)
119+
{
120+
this.OutputStream.WriteObject(taskId, targetDir);
121+
return;
122+
}
123+
124+
string[] filePath = NamingUtil.ValidatePath(this.Path, true);
125+
CloudFile targetFile = baseDirectory.GetFileReferenceByPath(filePath);
126+
127+
await this.Channel.FetchFileAttributesAsync(
128+
targetFile,
129+
null,
130+
this.RequestOptions,
131+
this.OperationContext,
132+
this.CmdletCancellationToken);
133+
134+
this.OutputStream.WriteObject(taskId, targetFile);
135+
});
136+
}
86137
}
87138
}
88139
}

src/Common/Storage/Commands.Storage/File/StorageClientExtensions.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ public static CloudFileDirectory GetDirectoryReferenceByPath(this CloudFileDirec
4848
currentDirectory = currentDirectory.GetDirectoryReference(subFolder);
4949
}
5050

51-
return currentDirectory;
51+
return new CloudFileDirectory(currentDirectory.Uri, currentDirectory.Share.ServiceClient.Credentials);
5252
}
5353

5454
/// <summary>
@@ -71,7 +71,9 @@ public static CloudFile GetFileReferenceByPath(this CloudFileDirectory currentDi
7171
currentDirectory = currentDirectory.GetDirectoryReference(path[i]);
7272
}
7373

74-
return currentDirectory.GetFileReference(path.Last());
74+
CloudFile file = currentDirectory.GetFileReference(path.Last());
75+
76+
return new CloudFile(file.Uri, file.Share.ServiceClient.Credentials);
7577
}
7678

7779
/// <summary>

0 commit comments

Comments
 (0)