/// <summary> /// Implementation for the GetPermissions method. /// </summary> /// <param name="accessCondition">An <see cref="AccessCondition"/> object that represents the access conditions for the share. If <c>null</c>, no condition is used.</param> /// <param name="options">A <see cref="FileRequestOptions"/> object that specifies additional options for the request.</param> /// <returns>A <see cref="RESTCommand"/> that gets the permissions.</returns> private RESTCommand <FileSharePermissions> GetPermissionsImpl(AccessCondition accessCondition, FileRequestOptions options) { FileSharePermissions shareAcl = null; RESTCommand <FileSharePermissions> getCmd = new RESTCommand <FileSharePermissions>(this.ServiceClient.Credentials, this.StorageUri); options.ApplyToStorageCommand(getCmd); getCmd.CommandLocationMode = CommandLocationMode.PrimaryOrSecondary; getCmd.RetrieveResponseStream = true; getCmd.BuildRequest = (cmd, uri, builder, cnt, serverTimeout, ctx) => ShareHttpRequestMessageFactory.GetAcl(uri, serverTimeout, accessCondition, cnt, ctx, this.ServiceClient.GetCanonicalizer(), this.ServiceClient.Credentials); getCmd.PreProcessResponse = (cmd, resp, ex, ctx) => { HttpResponseParsers.ProcessExpectedStatusCodeNoException(HttpStatusCode.OK, resp, null /* retVal */, cmd, ex); shareAcl = new FileSharePermissions(); return(shareAcl); }; getCmd.PostProcessResponse = (cmd, resp, ctx) => { this.UpdateETagAndLastModified(resp); return(Task.Factory.StartNew(() => { ShareHttpResponseParsers.ReadSharedAccessIdentifiers(cmd.ResponseStream, shareAcl); return shareAcl; })); }; return(getCmd); }
public virtual Task SetPermissionsAsync(FileSharePermissions permissions, AccessCondition accessCondition, FileRequestOptions options, OperationContext operationContext, CancellationToken cancellationToken) { FileRequestOptions modifiedOptions = FileRequestOptions.ApplyDefaults(options, this.ServiceClient); return(Task.Run(async() => await Executor.ExecuteAsyncNullReturn( this.SetPermissionsImpl(permissions, accessCondition, modifiedOptions), modifiedOptions.RetryPolicy, operationContext, cancellationToken), cancellationToken)); }
public async Task CloudFileShareGetEnumeratorPermissionsAsync() { CloudFileShare share = GetRandomShareReference(); try { await share.CreateAsync(); FileSharePermissions permissions = await share.GetPermissionsAsync(); Assert.AreEqual(0, permissions.SharedAccessPolicies.Count); // We do not have precision at milliseconds level. Hence, we need // to recreate the start DateTime to be able to compare it later. DateTime start = DateTime.UtcNow; start = new DateTime(start.Year, start.Month, start.Day, start.Hour, start.Minute, start.Second, DateTimeKind.Utc); DateTime expiry = start.AddMinutes(30); KeyValuePair <String, SharedAccessFilePolicy> sharedAccessPolicy = new KeyValuePair <string, SharedAccessFilePolicy>("key1", new SharedAccessFilePolicy() { SharedAccessStartTime = start, SharedAccessExpiryTime = expiry, Permissions = SharedAccessFilePermissions.List, }); DateTime start2 = DateTime.UtcNow; start2 = new DateTime(start2.Year, start2.Month, start2.Day, start2.Hour, start2.Minute, start2.Second, DateTimeKind.Utc); DateTime expiry2 = start2.AddMinutes(30); KeyValuePair <String, SharedAccessFilePolicy> sharedAccessPolicy2 = new KeyValuePair <string, SharedAccessFilePolicy>("key2", new SharedAccessFilePolicy() { SharedAccessStartTime = start2, SharedAccessExpiryTime = expiry2, Permissions = SharedAccessFilePermissions.List, }); permissions.SharedAccessPolicies.Add(sharedAccessPolicy); permissions.SharedAccessPolicies.Add(sharedAccessPolicy2); Assert.AreEqual(2, permissions.SharedAccessPolicies.Count); IEnumerator <KeyValuePair <string, SharedAccessFilePolicy> > policies = permissions.SharedAccessPolicies.GetEnumerator(); policies.MoveNext(); Assert.AreEqual(sharedAccessPolicy, policies.Current); policies.MoveNext(); Assert.AreEqual(sharedAccessPolicy2, policies.Current); } finally { share.DeleteIfExistsAsync().Wait(); } }
public async Task CloudFileShareClearPermissionsAsync() { CloudFileShare share = GetRandomShareReference(); try { await share.CreateAsync(); FileSharePermissions permissions = await share.GetPermissionsAsync(); Assert.AreEqual(0, permissions.SharedAccessPolicies.Count); // We do not have precision at milliseconds level. Hence, we need // to recreate the start DateTime to be able to compare it later. DateTime start = DateTime.UtcNow; start = new DateTime(start.Year, start.Month, start.Day, start.Hour, start.Minute, start.Second, DateTimeKind.Utc); DateTime expiry = start.AddMinutes(30); KeyValuePair <String, SharedAccessFilePolicy> sharedAccessPolicy = new KeyValuePair <string, SharedAccessFilePolicy>("key1", new SharedAccessFilePolicy() { SharedAccessStartTime = start, SharedAccessExpiryTime = expiry, Permissions = SharedAccessFilePermissions.List, }); permissions.SharedAccessPolicies.Add(sharedAccessPolicy); await share.SetPermissionsAsync(permissions); await Task.Delay(3 * 1000); Assert.AreEqual(1, permissions.SharedAccessPolicies.Count); Assert.AreEqual(true, permissions.SharedAccessPolicies.Contains(sharedAccessPolicy)); Assert.AreEqual(true, permissions.SharedAccessPolicies.ContainsKey("key1")); permissions.SharedAccessPolicies.Clear(); await share.SetPermissionsAsync(permissions); await Task.Delay(3 * 1000); permissions = await share.GetPermissionsAsync(); Assert.AreEqual(0, permissions.SharedAccessPolicies.Count); } finally { share.DeleteIfExistsAsync().Wait(); } }
public async Task CloudFileShareSetPermissionsAsync() { CloudFileShare share = GetRandomShareReference(); try { await share.CreateAsync(); FileSharePermissions permissions = await share.GetPermissionsAsync(); Assert.AreEqual(0, permissions.SharedAccessPolicies.Count); // We do not have precision at milliseconds level. Hence, we need // to recreate the start DateTime to be able to compare it later. DateTime start = DateTime.UtcNow; start = new DateTime(start.Year, start.Month, start.Day, start.Hour, start.Minute, start.Second, DateTimeKind.Utc); DateTime expiry = start.AddMinutes(30); permissions.SharedAccessPolicies.Add("key1", new SharedAccessFilePolicy() { SharedAccessStartTime = start, SharedAccessExpiryTime = expiry, Permissions = SharedAccessFilePermissions.List, }); await share.SetPermissionsAsync(permissions); await Task.Delay(30 * 1000); CloudFileShare share2 = share.ServiceClient.GetShareReference(share.Name); permissions = await share2.GetPermissionsAsync(); Assert.AreEqual(1, permissions.SharedAccessPolicies.Count); Assert.IsTrue(permissions.SharedAccessPolicies["key1"].SharedAccessStartTime.HasValue); Assert.AreEqual(start, permissions.SharedAccessPolicies["key1"].SharedAccessStartTime.Value.UtcDateTime); Assert.IsTrue(permissions.SharedAccessPolicies["key1"].SharedAccessExpiryTime.HasValue); Assert.AreEqual(expiry, permissions.SharedAccessPolicies["key1"].SharedAccessExpiryTime.Value.UtcDateTime); Assert.AreEqual(SharedAccessFilePermissions.List, permissions.SharedAccessPolicies["key1"].Permissions); } finally { share.DeleteIfExistsAsync().Wait(); } }
/// <summary> /// Implementation for the SetPermissions method. /// </summary> /// <param name="acl">The permissions to set.</param> /// <param name="accessCondition">An <see cref="AccessCondition"/> object that represents the access conditions for the share. If <c>null</c>, no condition is used.</param> /// <param name="options">A <see cref="FileRequestOptions"/> object that specifies additional options for the request.</param> /// <returns>A <see cref="RESTCommand"/> that sets the permissions.</returns> private RESTCommand <NullType> SetPermissionsImpl(FileSharePermissions acl, AccessCondition accessCondition, FileRequestOptions options) { MultiBufferMemoryStream memoryStream = new MultiBufferMemoryStream(null /* bufferManager */, (int)(1 * Constants.KB)); FileRequest.WriteSharedAccessIdentifiers(acl.SharedAccessPolicies, memoryStream); RESTCommand <NullType> putCmd = new RESTCommand <NullType>(this.ServiceClient.Credentials, this.StorageUri); options.ApplyToStorageCommand(putCmd); putCmd.BuildRequest = (cmd, uri, builder, cnt, serverTimeout, ctx) => ShareHttpRequestMessageFactory.SetAcl(uri, serverTimeout, FileSharePublicAccessType.Off, accessCondition, cnt, ctx, this.ServiceClient.GetCanonicalizer(), this.ServiceClient.Credentials); putCmd.BuildContent = (cmd, ctx) => HttpContentFactory.BuildContentFromStream(memoryStream, 0, memoryStream.Length, null /* md5 */, cmd, ctx); putCmd.StreamToDispose = memoryStream; putCmd.PreProcessResponse = (cmd, resp, ex, ctx) => { HttpResponseParsers.ProcessExpectedStatusCodeNoException(HttpStatusCode.OK, resp, NullType.Value, cmd, ex); this.UpdateETagAndLastModified(resp); return(NullType.Value); }; return(putCmd); }
public virtual Task SetPermissionsAsync(FileSharePermissions permissions, AccessCondition accessCondition, FileRequestOptions options, OperationContext operationContext, CancellationToken cancellationToken) { return AsyncExtensions.TaskFromVoidApm(this.BeginSetPermissions, this.EndSetPermissions, permissions, accessCondition, options, operationContext, cancellationToken); }
public virtual Task SetPermissionsAsync(FileSharePermissions permissions, AccessCondition accessCondition, FileRequestOptions options, OperationContext operationContext) { return this.SetPermissionsAsync(permissions, accessCondition, options, operationContext, CancellationToken.None); }
public virtual Task SetPermissionsAsync(FileSharePermissions permissions, CancellationToken cancellationToken) { return AsyncExtensions.TaskFromVoidApm(this.BeginSetPermissions, this.EndSetPermissions, permissions, cancellationToken); }
public virtual Task SetPermissionsAsync(FileSharePermissions permissions) { return this.SetPermissionsAsync(permissions, CancellationToken.None); }
/// <returns>A <see cref="Task"/> that represents an asynchronous action.</returns> public Task SetPermissionsAsync(FileSharePermissions permissions)
private RESTCommand <NullType> SetPermissionsImpl(FileSharePermissions acl, AccessCondition accessCondition, FileRequestOptions options) { throw new System.NotImplementedException(); }
public virtual Task SetPermissionsAsync(FileSharePermissions permissions) { throw new System.NotImplementedException(); }
public void SetSharePermissions(CloudFileShare share, FileSharePermissions permissions, AccessCondition accessCondition = null, FileRequestOptions options = null, OperationContext operationContext = null) { share.SetPermissions(permissions, accessCondition, options, operationContext); }
public void SetSharePermissions(CloudFileShare share, FileSharePermissions permissions, AccessCondition accessCondition = null, FileRequestOptions options = null, OperationContext operationContext = null) { throw new NotImplementedException(); }
/// <summary> /// Implementation for the SetPermissions method. /// </summary> /// <param name="acl">The permissions to set.</param> /// <param name="accessCondition">An <see cref="AccessCondition"/> object that represents the access conditions for the share. If <c>null</c>, no condition is used.</param> /// <param name="options">A <see cref="FileRequestOptions"/> object that specifies additional options for the request.</param> /// <returns>A <see cref="RESTCommand"/> that sets the permissions.</returns> private RESTCommand<NullType> SetPermissionsImpl(FileSharePermissions acl, AccessCondition accessCondition, FileRequestOptions options) { MultiBufferMemoryStream memoryStream = new MultiBufferMemoryStream(null /* bufferManager */, (int)(1 * Constants.KB)); FileRequest.WriteSharedAccessIdentifiers(acl.SharedAccessPolicies, memoryStream); RESTCommand<NullType> putCmd = new RESTCommand<NullType>(this.ServiceClient.Credentials, this.StorageUri); options.ApplyToStorageCommand(putCmd); putCmd.Handler = this.ServiceClient.AuthenticationHandler; putCmd.BuildClient = HttpClientFactory.BuildHttpClient; putCmd.BuildRequest = (cmd, uri, builder, cnt, serverTimeout, ctx) => ShareHttpRequestMessageFactory.SetAcl(uri, serverTimeout, FileSharePublicAccessType.Off, accessCondition, cnt, ctx); putCmd.BuildContent = (cmd, ctx) => HttpContentFactory.BuildContentFromStream(memoryStream, 0, memoryStream.Length, null /* md5 */, cmd, ctx); putCmd.StreamToDispose = memoryStream; putCmd.PreProcessResponse = (cmd, resp, ex, ctx) => { HttpResponseParsers.ProcessExpectedStatusCodeNoException(HttpStatusCode.OK, resp, NullType.Value, cmd, ex); this.UpdateETagAndLastModified(resp); return NullType.Value; }; return putCmd; }
public Task SetPermissionsAsync(FileSharePermissions permissions, AccessCondition accessCondition, FileRequestOptions options, OperationContext operationContext, CancellationToken cancellationToken) { FileRequestOptions modifiedOptions = FileRequestOptions.ApplyDefaults(options, this.ServiceClient); return Task.Run(async () => await Executor.ExecuteAsyncNullReturn( this.SetPermissionsImpl(permissions, accessCondition, modifiedOptions), modifiedOptions.RetryPolicy, operationContext, cancellationToken), cancellationToken); }
public IAsyncAction SetPermissionsAsync(FileSharePermissions permissions, AccessCondition accessCondition, FileRequestOptions options, OperationContext operationContext) { FileRequestOptions modifiedOptions = FileRequestOptions.ApplyDefaults(options, this.ServiceClient); return AsyncInfo.Run(async (token) => await Executor.ExecuteAsyncNullReturn( this.SetPermissionsImpl(permissions, accessCondition, modifiedOptions), modifiedOptions.RetryPolicy, operationContext, token)); }
public IAsyncAction SetPermissionsAsync(FileSharePermissions permissions) #endif { return this.SetPermissionsAsync(permissions, null /* accessCondition */, null /* options */, null /* operationContext */); }
/// <summary> /// Implementation for the GetPermissions method. /// </summary> /// <param name="accessCondition">An <see cref="AccessCondition"/> object that represents the condition that must be met in order for the request to proceed. If <c>null</c>, no condition is used.</param> /// <param name="options">A <see cref="FileRequestOptions"/> object that specifies additional options for the request.</param> /// <returns>A <see cref="RESTCommand{T}"/> that gets the permissions.</returns> private RESTCommand<FileSharePermissions> GetPermissionsImpl(AccessCondition accessCondition, FileRequestOptions options) { FileSharePermissions shareAcl = null; RESTCommand<FileSharePermissions> getCmd = new RESTCommand<FileSharePermissions>(this.ServiceClient.Credentials, this.StorageUri); options.ApplyToStorageCommand(getCmd); getCmd.CommandLocationMode = CommandLocationMode.PrimaryOrSecondary; getCmd.RetrieveResponseStream = true; getCmd.BuildRequestDelegate = (uri, builder, serverTimeout, useVersionHeader, ctx) => ShareHttpWebRequestFactory.GetAcl(uri, serverTimeout, accessCondition, useVersionHeader, ctx); getCmd.SignRequest = this.ServiceClient.AuthenticationHandler.SignRequest; getCmd.PreProcessResponse = (cmd, resp, ex, ctx) => { HttpResponseParsers.ProcessExpectedStatusCodeNoException(HttpStatusCode.OK, resp, null /* retVal */, cmd, ex); shareAcl = new FileSharePermissions(); return shareAcl; }; getCmd.PostProcessResponse = (cmd, resp, ctx) => { ShareHttpResponseParsers.ReadSharedAccessIdentifiers(cmd.ResponseStream, shareAcl); this.UpdateETagAndLastModified(resp); return shareAcl; }; return getCmd; }
/// <summary> /// Implementation for the SetPermissions method. /// </summary> /// <param name="acl">The permissions to set.</param> /// <param name="accessCondition">An <see cref="AccessCondition"/> object that represents the condition that must be met in order for the request to proceed. If <c>null</c>, no condition is used.</param> /// <param name="options">A <see cref="FileRequestOptions"/> object that specifies additional options for the request.</param> /// <returns>A <see cref="RESTCommand{T}"/> that sets the permissions.</returns> private RESTCommand<NullType> SetPermissionsImpl(FileSharePermissions acl, AccessCondition accessCondition, FileRequestOptions options) { MultiBufferMemoryStream memoryStream = new MultiBufferMemoryStream(null /* bufferManager */, (int)(1 * Constants.KB)); FileRequest.WriteSharedAccessIdentifiers(acl.SharedAccessPolicies, memoryStream); memoryStream.Seek(0, SeekOrigin.Begin); RESTCommand<NullType> putCmd = new RESTCommand<NullType>(this.ServiceClient.Credentials, this.StorageUri); options.ApplyToStorageCommand(putCmd); putCmd.BuildRequestDelegate = (uri, builder, serverTimeout, useVersionHeader, ctx) => ShareHttpWebRequestFactory.SetAcl(uri, serverTimeout, FileSharePublicAccessType.Off, accessCondition, useVersionHeader, ctx); putCmd.SendStream = memoryStream; putCmd.StreamToDispose = memoryStream; putCmd.RecoveryAction = RecoveryActions.RewindStream; putCmd.SignRequest = this.ServiceClient.AuthenticationHandler.SignRequest; putCmd.PreProcessResponse = (cmd, resp, ex, ctx) => { HttpResponseParsers.ProcessExpectedStatusCodeNoException(HttpStatusCode.OK, resp, NullType.Value, cmd, ex); this.UpdateETagAndLastModified(resp); return NullType.Value; }; return putCmd; }
public virtual Task SetPermissionsAsync(FileSharePermissions permissions, AccessCondition accessCondition, FileRequestOptions options, OperationContext operationContext) { return(this.SetPermissionsAsync(permissions, accessCondition, options, operationContext, CancellationToken.None)); }
public virtual Task SetPermissionsAsync(FileSharePermissions permissions, AccessCondition accessCondition, FileRequestOptions options, OperationContext operationContext, CancellationToken cancellationToken) { throw new System.NotImplementedException(); }
public virtual Task SetPermissionsAsync(FileSharePermissions permissions) { return(this.SetPermissionsAsync(permissions, null /* accessCondition */, null /* options */, null /* operationContext */)); }
public virtual void SetPermissions(FileSharePermissions permissions, AccessCondition accessCondition = null, FileRequestOptions options = null, OperationContext operationContext = null) { FileRequestOptions modifiedOptions = FileRequestOptions.ApplyDefaults(options, this.ServiceClient); Executor.ExecuteSync( this.SetPermissionsImpl(permissions, accessCondition, modifiedOptions), modifiedOptions.RetryPolicy, operationContext); }
public virtual ICancellableAsyncResult BeginSetPermissions(FileSharePermissions permissions, AccessCondition accessCondition, FileRequestOptions options, OperationContext operationContext, AsyncCallback callback, object state) { FileRequestOptions modifiedOptions = FileRequestOptions.ApplyDefaults(options, this.ServiceClient); return Executor.BeginExecuteAsync( this.SetPermissionsImpl(permissions, accessCondition, modifiedOptions), modifiedOptions.RetryPolicy, operationContext, callback, state); }
public virtual ICancellableAsyncResult BeginSetPermissions(FileSharePermissions permissions, AsyncCallback callback, object state) { return this.BeginSetPermissions(permissions, null /* accessCondition */, null /* options */, null /* operationContext */, callback, state); }
public virtual Task SetPermissionsAsync(FileSharePermissions permissions) { return this.SetPermissionsAsync(permissions, null /* accessCondition */, null /* options */, null /* operationContext */); }