示例#1
0
        protected override async Task OnDeleteAsync(Uri resourceUri, DeleteRequestOptions deleteRequestOptions, CancellationToken cancellationToken)
        {
            string name = GetName(resourceUri);

            string path = Path.Trim('\\') + '\\';

            string folder = string.Empty;

            string[] t = name.Split('/');
            if (t.Length == 2)
            {
                folder = t[0];
                name   = t[1];
            }

            if (folder != string.Empty)
            {
                folder = folder + '\\';
            }

            string filename = path + folder + name;

            FileInfo fileInfo = new FileInfo(filename);

            if (fileInfo.Exists)
            {
                await Task.Run(() => { fileInfo.Delete(); }, cancellationToken);
            }
        }
示例#2
0
 protected override async Task OnDeleteAsync(Uri resourceUri, DeleteRequestOptions deleteRequestOptions, CancellationToken cancellationToken)
 {
     if (_onDelete != null)
     {
         await _onDelete(resourceUri, deleteRequestOptions, cancellationToken);
     }
 }
示例#3
0
        protected override async Task OnDeleteAsync(Uri resourceUri, DeleteRequestOptions deleteRequestOptions, CancellationToken cancellationToken)
        {
            string name = GetName(resourceUri);

            var accessCondition = (deleteRequestOptions as DeleteRequestOptionsWithAccessCondition)?.AccessCondition;

            CloudBlockBlob blob = GetBlockBlobReference(name);
            await blob.DeleteAsync(deleteSnapshotsOption : DeleteSnapshotsOption.IncludeSnapshots,
                                   accessCondition : accessCondition,
                                   options : null,
                                   operationContext : null,
                                   cancellationToken : cancellationToken);
        }
示例#4
0
        protected override Task OnDeleteAsync(Uri resourceUri, DeleteRequestOptions deleteRequestOptions, CancellationToken cancellationToken)
        {
            if (deleteRequestOptions is DeleteRequestOptionsWithAccessCondition deleteRequestOptionsWithAccessCondition)
            {
                // Verify the access condition of this request.
                var accessCondition = deleteRequestOptionsWithAccessCondition.AccessCondition;
                AssertAccessCondition(resourceUri, accessCondition);
            }

            Content.TryRemove(resourceUri, out _);
            ContentBytes.TryRemove(resourceUri, out _);
            ListMock.TryRemove(resourceUri, out _);

            return(Task.FromResult(true));
        }
示例#5
0
        protected override Task OnDeleteAsync(Uri resourceUri, DeleteRequestOptions deleteRequestOptions, CancellationToken cancellationToken)
        {
            var tasks = new List <Task>();

            tasks.Add(_primaryStorage.DeleteAsync(resourceUri, cancellationToken, deleteRequestOptions));

            foreach (var storage in _secondaryStorage)
            {
                var secondaryResourceUri = new Uri(resourceUri.ToString()
                                                   .Replace(_primaryStorage.BaseAddress.ToString(), storage.BaseAddress.ToString()));

                tasks.Add(storage.DeleteAsync(secondaryResourceUri, cancellationToken, deleteRequestOptions));
            }

            return(Task.WhenAll(tasks));
        }
 public Task DeleteAsync(Uri resourceUri, CancellationToken cancellationToken, DeleteRequestOptions deleteRequestOptions = null)
 {
     return(_innerStorage.DeleteAsync(resourceUri, cancellationToken, deleteRequestOptions));
 }
示例#7
0
 protected override Task OnDeleteAsync(
     Uri resourceUri,
     DeleteRequestOptions deleteRequestOptions,
     CancellationToken cancellationToken) => throw new NotImplementedException();
示例#8
0
 protected abstract Task OnDeleteAsync(Uri resourceUri, DeleteRequestOptions deleteRequestOptions, CancellationToken cancellationToken);
示例#9
0
        public async Task DeleteAsync(Uri resourceUri, CancellationToken cancellationToken, DeleteRequestOptions deleteRequestOptions = null)
        {
            TraceMethod(nameof(DeleteAsync), resourceUri);

            var stopwatch = Stopwatch.StartNew();

            try
            {
                await OnDeleteAsync(resourceUri, deleteRequestOptions, cancellationToken);
            }
            catch (StorageException e)
            {
                WebException webException = e.InnerException as WebException;
                if (webException != null)
                {
                    HttpStatusCode statusCode = ((HttpWebResponse)webException.Response).StatusCode;
                    if (statusCode != HttpStatusCode.NotFound)
                    {
                        throw;
                    }
                }
                else
                {
                    throw;
                }
            }
            catch (Exception e)
            {
                TraceException(nameof(DeleteAsync), resourceUri, e);
                throw;
            }

            TraceExecutionTime(nameof(DeleteAsync), resourceUri, stopwatch.ElapsedMilliseconds);
        }