public async Task <bool> DeleteAsync(FileStorage entity)
        {
            try
            {
                FileStorage currentWorkingObject = _repositoryFileStorage.Get(entity.Id);

                CloudFileDirectory currentRootDirectory = OpenFileShareConnection();
                CloudFileDirectory currentSubdirectory  = currentRootDirectory.GetDirectoryReference(currentWorkingObject.SubPath.Replace(_configurationManager.GetValue("CloudStorageShareName") + "/", ""));

                CloudFile currentCloudSmbFile = currentSubdirectory.GetFileReference(currentWorkingObject.FileName);

                await currentCloudSmbFile.DeleteAsync();

                await currentSubdirectory.DeleteAsync();

                _repositoryFileStorage.Delete(currentWorkingObject);
            }
            catch (Exception fileStorageError)
            {
                _applicationLogTools.LogError(fileStorageError, new Dictionary <string, dynamic> {
                    { "ClassName", "Infrastructure.FileStorages" }
                });
                return(false);
            }

            return(true);
        }
 public static void Delete(this CloudFileDirectory dir, AccessCondition accessCondition = null, FileRequestOptions options = null, OperationContext operationContext = null)
 {
     dir.DeleteAsync(accessCondition, options, operationContext).GetAwaiter().GetResult();
 }
Esempio n. 3
0
 public Task DeleteDirectoryAsync(CloudFileDirectory directory, AccessCondition accessCondition, FileRequestOptions options, OperationContext operationContext, CancellationToken cancellationToken)
 {
     return(directory.DeleteAsync(accessCondition, options, operationContext, cancellationToken));
 }
Esempio n. 4
0
 public override async Task DeleteAsync()
 {
     await _dir.DeleteAsync();
 }
Esempio n. 5
0
        /// <summary>
        /// Recursive delete of folder and all included subfolders or files.
        /// </summary>
        /// <param name="cloudFileDirectory">Directory to delete</param>
        public static void DeleteRecursive(this CloudFileDirectory cloudFileDirectory)
        {
            #region validation

            if (cloudFileDirectory == null)
            {
                throw new ArgumentNullException(nameof(cloudFileDirectory));
            }

            #endregion

            if (!TaskUtilities.ExecuteSync(cloudFileDirectory.ExistsAsync()))
            {
                return;
            }

            var directoriesToBeDeleted = new List <CloudFileDirectory>();

            var continuationToken = new FileContinuationToken();

            // get first segment
            FileResultSegment fileResultSegment;

            do
            {
                fileResultSegment = TaskUtilities.ExecuteSync(cloudFileDirectory.ListFilesAndDirectoriesSegmentedAsync(continuationToken));

                // iterate through items
                foreach (IListFileItem fileListItem in fileResultSegment.Results)
                {
                    switch (fileListItem)
                    {
                    case CloudFile file:

                        // Delete file directly
                        TaskUtilities.ExecuteSync(file.DeleteAsync());

                        break;

                    case CloudFileDirectory directory:

                        // Add the current directory
                        directoriesToBeDeleted.Add(directory);

                        // List all sub directories recursively
                        directoriesToBeDeleted.AddRange(directory.ListSubDirectories());

                        break;
                    }
                }
            } while (fileResultSegment.ContinuationToken != null);

            // Sort directories bottom to top so the most deepest nested directories will be deleted first
            directoriesToBeDeleted.Sort((aDirectory, bDirectory) => bDirectory.Uri.LocalPath.Length.CompareTo(aDirectory.Uri.LocalPath.Length));

            // Delete all found directories
            foreach (CloudFileDirectory cloudFileDirectoryToBeDeleted in directoriesToBeDeleted)
            {
                TaskUtilities.ExecuteSync(cloudFileDirectoryToBeDeleted.DeleteAsync());
            }

            // Delete the parent directory itself in case it´s not the root directory (which is the file share)
            if (cloudFileDirectory.SnapshotQualifiedUri != cloudFileDirectory.Share.GetRootDirectoryReference().SnapshotQualifiedUri)
            {
                TaskUtilities.ExecuteSync(cloudFileDirectory.DeleteAsync());
            }
        }