/// <summary>
        /// Generates the resource.
        /// </summary>
        /// <param name="connectionString">Optional connection string for the resource.</param>
        /// <param name="parameters">The resource parameters.</param>
        /// <returns>Returns the resource.</returns>
        public override ResourceToken CreateResourceToken(string connectionString, ResourceParameters parameters)
        {
            if (string.IsNullOrWhiteSpace(connectionString))
            {
                throw new ArgumentException("connectionString is invalid");
            }

            if (parameters == null)
            {
                throw new ArgumentNullException("parameters");
            }

            BlobParameters blobParameters = parameters as BlobParameters;

            if (blobParameters == null)
            {
                throw new ArgumentException("Expected a BlobParameters collection", "parameters");
            }

            if (string.IsNullOrWhiteSpace(blobParameters.Container))
            {
                throw new ArgumentException("The container name must not be null or empty", "parameters.Container");
            }

            if (string.IsNullOrWhiteSpace(blobParameters.Name))
            {
                throw new ArgumentException("The blob name must not be null or empty", "parameters.Name");
            }

            StorageProvider storageProvider = new StorageProvider(connectionString);

            return(storageProvider.CreateBlobAccessToken(blobParameters.Container, blobParameters.Name, blobParameters.Permissions, blobParameters.Expiration));
        }
        /// <summary>
        /// Extracts the parameters for a request.
        /// </summary>
        /// <param name="parameters">The parameters to extract.</param>
        /// <param name="defaultParameters">Optional parameters instance to use.</param>
        /// <returns>Returns the extracted parameters.</returns>
        public override ResourceParameters ExtractParameters(JToken parameters, ResourceParameters defaultParameters = null)
        {
            BlobParameters blobParameters = null;

            if (defaultParameters == null)
            {
                blobParameters = new BlobParameters();
            }
            else
            {
                blobParameters = defaultParameters as BlobParameters;
                if (blobParameters == null)
                {
                    throw new ArgumentException("Must be a BlobParameters instance", "defaultParameters");
                }
            }

            base.ExtractParameters(parameters, blobParameters);

            try
            {
                // Container.
                blobParameters.Container = parameters.Value <string>("container");
                if (string.IsNullOrWhiteSpace(blobParameters.Container))
                {
                    throw new HttpResponseException(HttpStatusCode.BadRequest);
                }
            }
            catch (Exception)
            {
                throw new HttpResponseException(HttpStatusCode.BadRequest);
            }

            return(blobParameters);
        }
Esempio n. 3
0
        public void Blob_ExtractParameters_ReturnsBlobToken()
        {
            // Setup
            AzureBlobBroker broker = new AzureBlobBroker();

            // Act
            BlobParameters parameters = (BlobParameters)broker.ExtractParameters(this.GenerateBlobJson());

            // Assert
            Assert.AreEqual("container", parameters.Container);
            Assert.AreEqual("blob", parameters.Name);
            Assert.AreEqual(ResourcePermissions.ReadWrite, parameters.Permissions);
            Assert.IsTrue(parameters.Expiration > DateTime.UtcNow - TimeSpan.FromSeconds(1) && parameters.Expiration < DateTime.UtcNow + TimeSpan.FromSeconds(1));
        }