namespace View_by_Distance.Shared.Models.Stateless.Methods; internal abstract class FileSystem { // ... private static void SetFileSystemCollection(string requestPath, (string RootResultsDirectoryAbsoluteUri, string C_ResizeContentDirectory, string D_FacesContentDirectory, string E_DistanceCollectionDirectory) tuple, bool all, List results, IEnumerator subDirectoryFiles, List faceFileSystemCollection) { Models.Face face; Models.FaceFileSystem faceFileSystem; face = Face.GetFace(subDirectoryFiles.Current); faceFileSystem = new Models.FaceFileSystem(requestPath, tuple.RootResultsDirectoryAbsoluteUri.Length, tuple.C_ResizeContentDirectory, tuple.D_FacesContentDirectory, subDirectoryFiles.Current, face); if (!all) results.Add(faceFileSystem); else faceFileSystemCollection.Add(faceFileSystem); } private static void LoopFileSystemCollection(string requestPath, (string RootResultsDirectoryAbsoluteUri, string C_ResizeContentDirectory, string D_FacesContentDirectory, string E_DistanceCollectionDirectory) tuple, bool all, List results, IEnumerator subDirectoryFiles, List faceFileSystemCollection) { for (int j = 0; j < int.MaxValue; j++) { SetFileSystemCollection(requestPath, tuple, all, results, subDirectoryFiles, faceFileSystemCollection); if (!all || !subDirectoryFiles.MoveNext()) break; } } private static void SetFileSystemCollection(string[] directories, List results, int i) { DirectoryInfo directoryInfo = new(directories[i]); Models.FileSystem fileSystem = new DirectoryFileSystem(directoryInfo); results.Add(fileSystem); } private static void LoopFileSystemCollection(string requestPath, (string RootResultsDirectoryAbsoluteUri, string C_ResizeContentDirectory, string D_FacesContentDirectory, string E_DistanceCollectionDirectory) tuple, string[] directories, bool all, List results, IEnumerator subDirectoryFiles, List faceFileSystemCollection, int i) { if (subDirectoryFiles.MoveNext()) LoopFileSystemCollection(requestPath, tuple, all, results, subDirectoryFiles, faceFileSystemCollection); else SetFileSystemCollection(directories, results, i); } internal static List GetFileSystemCollection(string requestPath, (string RootResultsDirectoryAbsoluteUri, string C_ResizeContentDirectory, string D_FacesContentDirectory, string E_DistanceCollectionDirectory) tuple, string[] directories, string[] files, bool all) { List results = []; Models.Face face; Models.FaceFileSystem faceFileSystem; IEnumerator subDirectoryFiles; List faceFileSystemCollection = []; for (int i = 0; i < directories.Length; i++) { subDirectoryFiles = Directory.EnumerateFiles(directories[i], "*.json", SearchOption.TopDirectoryOnly).GetEnumerator(); LoopFileSystemCollection(requestPath, tuple, directories, all, results, subDirectoryFiles, faceFileSystemCollection, i); } for (int i = 0; i < files.Length; i++) { face = Face.GetFace(files[i]); faceFileSystem = new Models.FaceFileSystem(requestPath, tuple.RootResultsDirectoryAbsoluteUri.Length, tuple.C_ResizeContentDirectory, tuple.D_FacesContentDirectory, files[i], face); results.Add(faceFileSystem); } if (all) results.AddRange(faceFileSystemCollection); return results; } }