Beispiel #1
0
        /// <summary>
        /// Will create policy on top of container, and return saskey
        /// </summary>
        /// <returns></returns>
        public async Task <AzureSasKey> GetContainerSAS()
        {
            var container = await _containerFactory.CreateContainerReference();

            var permissions = await GetContainerPermissions(container);

            var policy = GetPolicy(permissions);

            if (policy == null)
            {
                await CreatePolicyAndSetPersmission(permissions, container);
            }
            else if (IsExpired(policy))
            {
                DeletePolicy(policy, permissions);
                await CreatePolicyAndSetPersmission(permissions, container);
            }
            var expiryTime = GetExpiryTime(policy);

            if (!expiryTime.HasValue)
            {
                throw new Exception(Expiry_Time_Is_Invalid);
            }

            string token = GetSharedAccessSignature(container, policyName);

            if (string.IsNullOrWhiteSpace(token))
            {
                throw new Exception(SasKey_Is_Invalid);
            }

            return(new AzureSasKey
            {
                ExpiryTimeInUtc = expiryTime.Value,
                SasKey = token
            });
        }