internal async Task <SharedAccessQueuePolicies> GetPoliciesAsync(IStorageQueueManagement localChannel, string queueName, string policyName)
        {
            CloudQueue       queue            = localChannel.GetQueueReference(queueName);
            QueuePermissions queuePermissions = await localChannel.GetPermissionsAsync(queue).ConfigureAwait(false);

            return(queuePermissions.SharedAccessPolicies);
        }
示例#2
0
        /// <summary>
        /// Validate the queue access policy
        /// </summary>
        /// <param name="policy">SharedAccessBlobPolicy object</param>
        /// <param name="policyIdentifier">The policy identifier which need to be checked.</param>
        public static bool ValidateQueueAccessPolicy(IStorageQueueManagement channel, string queueName,
                                                     SharedAccessQueuePolicy policy, string policyIdentifier)
        {
            if (string.IsNullOrEmpty(policyIdentifier))
            {
                return(true);
            }
            CloudQueue          queue      = channel.GetQueueReference(queueName);
            QueueRequestOptions options    = null;
            OperationContext    context    = null;
            QueuePermissions    permission = channel.GetPermissions(queue, options, context);

            SharedAccessQueuePolicy sharedAccessPolicy =
                GetExistingPolicy <SharedAccessQueuePolicy>(permission.SharedAccessPolicies, policyIdentifier);

            if (policy.Permissions != SharedAccessQueuePermissions.None)
            {
                throw new ArgumentException(Resources.SignedPermissionsMustBeOmitted);
            }

            if (policy.SharedAccessExpiryTime.HasValue && sharedAccessPolicy.SharedAccessExpiryTime.HasValue)
            {
                throw new ArgumentException(Resources.SignedExpiryTimeMustBeOmitted);
            }

            return(!sharedAccessPolicy.SharedAccessExpiryTime.HasValue);
        }
 internal async Task<SharedAccessQueuePolicies> GetPoliciesAsync(IStorageQueueManagement localChannel, string queueName, string policyName)
 {
     CloudQueue queue = localChannel.GetQueueReference(queueName);
     QueuePermissions queuePermissions = await localChannel.GetPermissionsAsync(queue);
     return queuePermissions.SharedAccessPolicies;
 }