private async Task <HttpResponseMessage> PutBlobHandler(string container, string blob, IHttpRequestWrapper requestWrapper, StorageOperationTypes operation) { return(await DoHandlerAsync(String.Format("BlobController.PutBlobHandler: {0} {1}/{2}", operation, container, blob), async() => { var namespaceBlob = await NamespaceHandler.CreateNamespaceBlobAsync(container, blob); if (BlobReplicationOperations.DoesOperationTriggerReplication(operation) && BlobReplicationHandler.ShouldReplicateBlob(requestWrapper.Headers, namespaceBlob)) { await BlobReplicationHandler.EnqueueBlobReplicationAsync(namespaceBlob, false); } return await ForwardRequestHandler(namespaceBlob, operation); })); }
/// <summary> /// Generic function to forward blob request. Target blob must already exist. /// </summary> private async Task <HttpResponseMessage> BasicBlobHandler(string container, string blob, IHttpRequestWrapper requestWrapper, StorageOperationTypes operation) { return(await DoHandlerAsync(String.Format("BlobController.BasicBlobHandler: {0} {1}/{2}", operation, container, blob), async() => { var namespaceBlob = await NamespaceHandler.FetchNamespaceBlobAsync(container, blob); if (!await namespaceBlob.ExistsAsync()) { return this.CreateResponse(HttpStatusCode.NotFound, (RequestHeaders)null); } if (BlobReplicationOperations.DoesOperationTriggerReplication(operation) && (namespaceBlob.IsReplicated || BlobReplicationHandler.ShouldReplicateBlob(requestWrapper.Headers, namespaceBlob))) { await BlobReplicationHandler.EnqueueBlobReplicationAsync(namespaceBlob, false); } return await ForwardRequestHandler(namespaceBlob, operation); })); }