public string GetSharedAccessSignature(SharedAccessQueuePolicy policy) { return(_cloudQueue.GetSharedAccessSignature(policy)); }
internal static void SetupAccessPolicyPermission <T>(T policy, string permission) { //set permission as none if passed-in value is empty if (permission == null) { return; } if (string.IsNullOrEmpty(permission)) { if (typeof(T) == typeof(SharedAccessTablePolicy)) { ((SharedAccessTablePolicy)(Object)policy).Permissions = SharedAccessTablePermissions.None; } else if (typeof(T) == typeof(SharedAccessFilePolicy)) { ((SharedAccessFilePolicy)(Object)policy).Permissions = SharedAccessFilePermissions.None; } else if (typeof(T) == typeof(SharedAccessBlobPolicy)) { ((SharedAccessBlobPolicy)(Object)policy).Permissions = SharedAccessBlobPermissions.None; } else if ((typeof(T) == typeof(SharedAccessQueuePolicy))) { ((SharedAccessQueuePolicy)(Object)policy).Permissions = SharedAccessQueuePermissions.None; } else { throw new ArgumentException(Resources.InvalidAccessPolicyType); } return; } permission = permission.ToLower(CultureInfo.InvariantCulture); try { if (typeof(T) == typeof(SharedAccessTablePolicy)) { //PowerShell will convert q to r in genreate table SAS. Add this to avoid regression string convertedPermission = permission.Replace('q', 'r'); ((SharedAccessTablePolicy)(Object)policy).Permissions = SharedAccessTablePolicy.PermissionsFromString(convertedPermission); } else if (typeof(T) == typeof(SharedAccessFilePolicy)) { ((SharedAccessFilePolicy)(Object)policy).Permissions = SharedAccessFilePolicy.PermissionsFromString(permission); } else if (typeof(T) == typeof(SharedAccessBlobPolicy)) { ((SharedAccessBlobPolicy)(Object)policy).Permissions = SharedAccessBlobPolicy.PermissionsFromString(permission); } else if ((typeof(T) == typeof(SharedAccessQueuePolicy))) { ((SharedAccessQueuePolicy)(Object)policy).Permissions = SharedAccessQueuePolicy.PermissionsFromString(permission); } else { throw new ArgumentException(Resources.InvalidAccessPolicyType); } } catch (System.ArgumentOutOfRangeException) { throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, Resources.InvalidAccessPermission, permission)); } }
/// <summary> /// Initializes a new instance of the AzureQueueManager /// </summary> /// <param name="clusterName">the cluster name</param> /// <param name="clusterHash">the cluster id hash</param> /// <param name="sessionId">the session id</param> /// <param name="azureStorageConnectionString">the Azure storage connection string</param> public AzureQueueProxy(string clusterName, int clusterHash, string sessionId, string azureStorageConnectionString) { // this works for broker ThreadPool.SetMinThreads(MinThreadsOfThreadpool, MinThreadsOfThreadpool); // improve http performance for Azure storage queue traffic ServicePointManager.DefaultConnectionLimit = 1000; ServicePointManager.Expect100Continue = false; ServicePointManager.UseNagleAlgorithm = false; this.clusterName = clusterName; this.SessionId = sessionId; this.clusterHash = clusterHash; this.azureStorageConnectionString = azureStorageConnectionString; // build the request and response queue // var requestStorageName = SoaHelper.GetRequestStorageName(clusterHash, SessionId); var requestBlobContainerName = SoaHelper.GetRequestStorageName(clusterHash, sessionId); var requestQueueNames = Enumerable.Range(0, MessageRetrieveConcurrencyLevel).Select(i => SoaHelper.GetRequestStorageName(clusterHash, sessionId) + $"-{i}").ToArray(); // this.responseStorageNamePrefix = SoaHelper.GetResponseStorageName(clusterId, SessionId); // exponential retry this.CreateStorageClient(DefaultRetryPolicy); this.requestQueues = requestQueueNames.Select(n => this.queueClient.GetQueueReference(n)).ToArray(); foreach (var requestQueue in this.requestQueues) { CreateQueueWithRetry(requestQueue); } if (sessionId == SessionStartInfo.StandaloneSessionId) { // Clear the queue in standalone session foreach (var requestQueue in this.requestQueues) { requestQueue.Clear(); } } this.requestBlobContainer = this.blobClient.GetContainerReference(requestBlobContainerName); CreateContainerWithRetry(this.requestBlobContainer); // generate the SAS token for the queue and blob container SharedAccessQueuePolicy queuePolicy = new SharedAccessQueuePolicy() { Permissions = SharedAccessQueuePermissions.Add, SharedAccessExpiryTime = DateTime.UtcNow.AddDays(7) }; this.requestQueueUris = this.requestQueues.Select(q => string.Join(string.Empty, q.Uri, q.GetSharedAccessSignature(queuePolicy))).ToArray(); SharedAccessBlobPolicy blobPolicy = new SharedAccessBlobPolicy() { Permissions = SharedAccessBlobPermissions.Write, SharedAccessExpiryTime = DateTime.UtcNow.AddDays(7) }; this.requestBlobUri = string.Join(string.Empty, this.requestBlobContainer.Uri, this.requestBlobContainer.GetSharedAccessSignature(blobPolicy)); this.requestStorageClients = this.requestQueues.Select(q => new AzureStorageClient(q, this.requestBlobContainer)).ToArray(); // this.responseStorageClient = new AzureStorageClient(this.responseQueue, this.responseBlobContainer); // initialize sender and retriever this.messageSender = new MessageSender(this.responseMessageClients, SenderConcurrency); this.messageRetrievers = this.requestStorageClients.Select(c => new MessageRetriever(c.Queue, RetrieverConcurrency, DefaultVisibleTimeout, this.HandleMessages, null)).ToArray(); this.receiveRequest = this.ReceiveRequest; }
internal static string GetHash(SharedAccessQueuePolicy policy, string accessPolicyIdentifier, string resourceName, string sasVersion, SharedAccessProtocol?protocols, IPAddressOrRange ipAddressOrRange, byte[] keyValue) { throw new System.NotImplementedException(); }
internal static UriQueryBuilder GetSignature(SharedAccessQueuePolicy policy, string accessPolicyIdentifier, string signature, string accountKeyName, string sasVersion, SharedAccessProtocol?protocols, IPAddressOrRange ipAddressOrRange) { throw new System.NotImplementedException(); }
public static async Task <string> CreateCloudQueueAndGetSas(string connectionString, string queueName, SharedAccessQueuePolicy queuePolicy) { return(GetCloudQueueSas(await CreateCloudQueueIfNotExistsAsync(GetCloudQueueReference(connectionString, queueName)), queuePolicy)); }
public static string GetCloudQueueSas(CloudQueue queue, SharedAccessQueuePolicy queuePolicy) { return(queue.Uri + queue.GetSharedAccessSignature(queuePolicy)); }
public string GetSharedAccessSignature(SharedAccessQueuePolicy policy, string accessPolicyIdentifier, SharedAccessProtocol?protocols = null, IPAddressOrRange ipAddressOrRange = null) { return(_queue.GetSharedAccessSignature(policy, accessPolicyIdentifier, protocols, ipAddressOrRange)); }