aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Tango.FileSystem/FileSystemManager.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Software/Visual_Studio/Tango.FileSystem/FileSystemManager.cs')
-rw-r--r--Software/Visual_Studio/Tango.FileSystem/FileSystemManager.cs261
1 files changed, 0 insertions, 261 deletions
diff --git a/Software/Visual_Studio/Tango.FileSystem/FileSystemManager.cs b/Software/Visual_Studio/Tango.FileSystem/FileSystemManager.cs
deleted file mode 100644
index dc8efa7dd..000000000
--- a/Software/Visual_Studio/Tango.FileSystem/FileSystemManager.cs
+++ /dev/null
@@ -1,261 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Linq;
-using System.Text;
-using System.Text.RegularExpressions;
-using System.Threading.Tasks;
-using Tango.Core.Helpers;
-using Tango.FileSystem.Network;
-using Tango.Logging;
-
-namespace Tango.FileSystem
-{
- public class FileSystemManager
- {
- public FileSystemItemDTO GetRoot()
- {
- FileSystemItemDTO folder = new FileSystemItemDTO();
- folder.Path = "This PC";
- folder.IsRoot = true;
- folder.Type = FileSystemItemType.Folder;
- folder.Items = DriveInfo.GetDrives().Where(x => x.DriveType == DriveType.Fixed || x.DriveType == DriveType.Removable || x.DriveType == DriveType.Network).Select(x => new FileSystemItemDTO()
- {
- Path = x.RootDirectory.FullName,
- DriveType = x.DriveType,
- DriveLabel = $"{x.VolumeLabel} ({x.Name.Replace("\\", "")})",
- Type = FileSystemItemType.Drive,
- }).Cast<FileSystemItemDTO>().ToList();
-
- return folder;
- }
-
- public FileSystemItemDTO GetFolder(GetFileSystemItemRequest request)
- {
- List<FileSystemItemDTO> items = new List<FileSystemItemDTO>();
-
- if (request.SpecialFolder.HasValue)
- {
- request.Path = Environment.GetFolderPath(request.SpecialFolder.Value);
- }
-
- if (String.IsNullOrWhiteSpace(request.Path))
- {
- return GetRoot();
- }
-
- try
- {
- if (request.Path.Count(x => x == '%') == 2)
- {
- var variable = Regex.Match(request.Path, "(?<=%)(.*?)(?=%)").Value;
- request.Path = request.Path.Replace($"%{variable}%", Environment.ExpandEnvironmentVariables($"%{variable}%"));
- }
- }
- catch
- {
- throw new ArgumentException("Could not parse environment variable.");
- }
-
- request.Path = Path.GetFullPath(request.Path);
-
- if (!Directory.Exists(request.Path))
- {
- throw new DirectoryNotFoundException("The specified directory could not be located.");
- }
-
- foreach (var directory in Directory.GetDirectories(request.Path))
- {
- items.Add(new FileSystemItemDTO()
- {
- Path = directory,
- Type = FileSystemItemType.Folder,
- DateModified = Directory.GetLastWriteTimeUtc(directory),
- DateCreated = Directory.GetCreationTimeUtc(directory),
- });
- }
-
- if (!request.FoldersOnly)
- {
- foreach (var file in Directory.GetFiles(request.Path, request.Filter != null ? request.Filter : "*.*"))
- {
- items.Add(new FileSystemItemDTO()
- {
- Path = file,
- Type = FileSystemItemType.File,
- DateModified = File.GetLastWriteTimeUtc(file),
- DateCreated = File.GetCreationTimeUtc(file),
- Size = new FileInfo(file).Length
- });
- }
- }
-
- return new FileSystemItemDTO()
- {
- Path = request.Path,
- Type = request.Path.Length == 3 ? FileSystemItemType.Drive : FileSystemItemType.Folder,
- Items = items
- };
- }
-
- public Task<FileSystemItem> GetFolder(String path, bool foldersOnly = false, String filter = "*.*")
- {
- return Task.Factory.StartNew<FileSystemItem>(() =>
- {
- return FileSystemItem.FromDTO(GetFolder(new GetFileSystemItemRequest()
- {
- Path = path,
- FoldersOnly = foldersOnly,
- Filter = filter,
- }));
- });
- }
-
- public Task<FileSystemItem> GetFolder(Environment.SpecialFolder specialFolder, bool foldersOnly = false, String filter = "*.*")
- {
- return Task.Factory.StartNew<FileSystemItem>(() =>
- {
- return FileSystemItem.FromDTO(GetFolder(new GetFileSystemItemRequest()
- {
- SpecialFolder = specialFolder,
- FoldersOnly = foldersOnly,
- Filter = filter,
- }));
- });
- }
-
- public void Delete(String path)
- {
- if (Directory.Exists(path))
- {
- Directory.Delete(path, true);
- }
- else if (File.Exists(path))
- {
- File.Delete(path);
- }
- else
- {
- throw new FileNotFoundException("Could not locate the specified file or directory.");
- }
- }
-
- public void Move(MoveRequest request)
- {
- if (Directory.Exists(request.Destination))
- {
- throw new IOException($"'{Path.GetFileName(request.Destination)}' already exists on the target folder.");
- }
-
- if (File.Exists(request.Source))
- {
- File.Move(request.Source, request.Destination);
- }
- else if (Directory.Exists(request.Source))
- {
- Directory.Move(request.Source, request.Destination);
- }
- else
- {
- throw new FileNotFoundException("Could not locate the source file or folder.");
- }
- }
-
- public void Copy(CopyRequest request)
- {
- if (File.Exists(request.Source))
- {
- if (request.Source == request.Destination)
- {
- while (File.Exists(request.Destination))
- {
- request.Destination = Path.Combine(Path.GetDirectoryName(request.Destination), Path.GetFileNameWithoutExtension(request.Destination)) + " copy" + Path.GetExtension(request.Destination);
- }
- }
- File.Copy(request.Source, request.Destination, true);
- }
- else if (Directory.Exists(request.Source))
- {
- Directory.CreateDirectory(Path.GetDirectoryName(request.Destination));
- PathHelper.CopyDirectory(request.Source, request.Destination, true);
- }
- else
- {
- throw new FileNotFoundException("Could not locate the source file or folder.");
- }
- }
-
- public FileSystemItemDTO CreateFolder(String path, String folderName)
- {
- String fullPath = Path.Combine(path, folderName);
-
- if (Directory.Exists(fullPath))
- {
- throw new IOException("The specified directory name already exists.");
- }
-
- Directory.CreateDirectory(fullPath);
-
- return GetFolder(new GetFileSystemItemRequest()
- {
- Path = fullPath
- });
- }
-
- public long PerformDiskSpaceOptimization()
- {
- var tempDir = Path.GetTempPath();
- var logsFolder = FileLogger.DefaultLogsFolder;
-
- long sizeBefore = GetDirectorySize(new DirectoryInfo(tempDir)) + GetDirectorySize(new DirectoryInfo(logsFolder));
-
- foreach (var file in Directory.GetFiles(tempDir, "*.*", SearchOption.AllDirectories))
- {
- try
- {
- FileInfo fileInfo = new FileInfo(file);
- if (fileInfo.LastWriteTime < DateTime.Now.AddDays(-1))
- {
- File.Delete(file);
- }
- }
- catch { }
- }
-
- foreach (var file in Directory.GetFiles(logsFolder, "*.*", SearchOption.AllDirectories))
- {
- try
- {
- FileInfo fileInfo = new FileInfo(file);
- if (fileInfo.LastWriteTime < DateTime.Now.AddDays(-2))
- {
- File.Delete(file);
- }
- }
- catch { }
- }
-
- long sizeAfter = GetDirectorySize(new DirectoryInfo(tempDir)) + GetDirectorySize(new DirectoryInfo(logsFolder));
-
- return Math.Max(sizeBefore - sizeAfter, 0);
- }
-
- public static long GetDirectorySize(DirectoryInfo d)
- {
- long size = 0;
- // Add file sizes.
- FileInfo[] fis = d.GetFiles();
- foreach (FileInfo fi in fis)
- {
- size += fi.Length;
- }
- // Add subdirectory sizes.
- DirectoryInfo[] dis = d.GetDirectories();
- foreach (DirectoryInfo di in dis)
- {
- size += GetDirectorySize(di);
- }
- return size;
- }
- }
-}