internal async Task <SharedAccessBlobPolicies> GetPoliciesAsync(IStorageBlobManagement localChannel, string containerName, string policyName) { CloudBlobContainer container = localChannel.GetContainerReference(containerName); BlobContainerPermissions blobContainerPermissions = await localChannel.GetContainerPermissionsAsync(container, null, null, null, CmdletCancellationToken).ConfigureAwait(false); return(blobContainerPermissions.SharedAccessPolicies); }
/// <summary> /// Async get container permission /// </summary> /// <param name="container">CloudBlobContainer object</param> /// <param name="taskId">Task id</param> /// <param name="context">Azure storage context</param> /// <returns></returns> internal async Task GetContainerPermission(long taskId, IStorageBlobManagement localChannel, CloudBlobContainer container, BlobContinuationToken continuationToken) { BlobRequestOptions requestOptions = RequestOptions; AccessCondition accessCondition = null; BlobContainerPermissions permissions = null; try { permissions = await localChannel.GetContainerPermissionsAsync(container, accessCondition, requestOptions, OperationContext, CmdletCancellationToken).ConfigureAwait(false); } catch (StorageException e) when(e.IsNotFoundException() || e.IsForbiddenException()) { // 404 Not found, or 403 Forbidden means we don't have permission to query the Permission of the specified container. // Just skip return container permission in this case. } WriteCloudContainerObject(taskId, localChannel, container, permissions, continuationToken); }
/// <summary> /// Async get container permission /// </summary> /// <param name="container">CloudBlobContainer object</param> /// <param name="taskId">Task id</param> /// <param name="context">Azure storage context</param> /// <returns></returns> internal async Task GetContainerPermission(long taskId, IStorageBlobManagement localChannel, CloudBlobContainer container, BlobContinuationToken continuationToken) { BlobRequestOptions requestOptions = RequestOptions; AccessCondition accessCondition = null; BlobContainerPermissions permissions = null; try { permissions = await localChannel.GetContainerPermissionsAsync(container, accessCondition, requestOptions, OperationContext, CmdletCancellationToken); } catch (StorageException e) { if (!e.IsNotFoundException()) { throw; } //404 Not found means we don't have permission to query the Permission of the specified container. } WriteCloudContainerObject(taskId, localChannel, container, permissions, continuationToken); }
/// <summary> /// Async get container permission /// </summary> /// <param name="container">CloudBlobContainer object</param> /// <param name="taskId">Task id</param> /// <param name="context">Azure storage context</param> /// <returns></returns> internal async Task GetContainerPermission(long taskId, IStorageBlobManagement localChannel, CloudBlobContainer container, BlobContinuationToken continuationToken) { BlobRequestOptions requestOptions = RequestOptions; AccessCondition accessCondition = null; BlobContainerPermissions permissions = null; bool needUseTrack2 = false; try { permissions = await localChannel.GetContainerPermissionsAsync(container, accessCondition, requestOptions, OperationContext, CmdletCancellationToken).ConfigureAwait(false); } catch (StorageException e) when(e.IsNotFoundException() || e.IsForbiddenException()) { // 404 Not found, or 403 Forbidden means we don't have permission to query the Permission of the specified container. // Just skip return container permission in this case. } catch (StorageException e) when(e.IsConflictException()) { // 409 Conflict, might caused by the container has an Stored access policy contains a permission that is not supported by Track1 SDK API veresion, so switch to Track2 SDK needUseTrack2 = true; } if (!needUseTrack2) // Track1 { WriteCloudContainerObject(taskId, localChannel, container, permissions, continuationToken); } else //Track2 { AzureStorageContainer azureContainer = new AzureStorageContainer(container, null); azureContainer.Context = localChannel.StorageContext; azureContainer.ContinuationToken = continuationToken; azureContainer.SetTrack2Permission(); OutputStream.WriteObject(taskId, azureContainer); } }
internal async Task<SharedAccessBlobPolicies> GetPoliciesAsync(IStorageBlobManagement localChannel, string containerName, string policyName) { CloudBlobContainer container = localChannel.GetContainerReference(containerName); BlobContainerPermissions blobContainerPermissions = await localChannel.GetContainerPermissionsAsync(container, null, null, null, CmdletCancellationToken); return blobContainerPermissions.SharedAccessPolicies; }