/// <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); }
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)); }