private IDirectory GetDiskSourceDirectory(WebHostContext context) { var descriptor = context.Deployment; if (string.IsNullOrEmpty(descriptor.ScopePath)) { throw new InvalidOperationException("Path can't be null or empty for directory deployment"); } var solutionRootPath = GetSolutionDir(); if (string.IsNullOrEmpty(solutionRootPath)) { throw new InvalidOperationException( string.Format( "Configuration Setting:{0} can't be null or empty for directory deployment", SolutionDirAppSettingName)); } var sourceDirInfo = new DirectoryInfo(Path.Combine(solutionRootPath, descriptor.ScopePath)); if (!sourceDirInfo.Exists) { throw new InvalidOperationException( string.Format( "Web app path:'{0}' doesn't exist", sourceDirInfo.FullName)); } var directory = new MemoryDirectory("root", null); directory.CopyFromDisk(sourceDirInfo); return(directory); }
public void DirectoryCanBeCopiedToDisk() { string expected = "test"; string expectedFileName = "test.html"; var root = new MemoryDirectory("root", null); root.CreateFileFromText(expectedFileName, expected); var dir = root.CreateDirectory(expected); dir.CreateFileFromText(expectedFileName, expected); var diskDir = new DirectoryInfo(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "root")); root.CopyToDisk(diskDir); Assert.True(Directory.Exists(Path.Combine(diskDir.FullName, expected))); Assert.True(File.Exists(Path.Combine(diskDir.FullName, expectedFileName))); Assert.True(File.Exists(Path.Combine(diskDir.FullName, expected, expectedFileName))); string content; using (var reader = new StreamReader(Path.Combine(diskDir.FullName, expectedFileName))) { content = reader.ReadToEnd(); } Assert.Equal(expected, content); using (var reader = new StreamReader(Path.Combine(diskDir.FullName, expected, expectedFileName))) { content = reader.ReadToEnd(); } Assert.Equal(expected, content); diskDir.Delete(true); }
public void DiskDirectoryCanBeCopied() { string expected = "test"; var dir = new DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory); var subDir = dir.CreateSubdirectory(expected); using (var writer = File.CreateText(Path.Combine(subDir.FullName, "test.html"))) { writer.Write(expected); } var subSubDir = subDir.CreateSubdirectory(expected); using (var writer = File.CreateText(Path.Combine(subSubDir.FullName, "test.html"))) { writer.Write(expected); } var root = new MemoryDirectory("root", null); root.CopyFromDisk(subDir); Assert.True(root.DirectoryExists(expected)); var file = root.FindFile("test.html"); Assert.Equal(expected, file.ReadAsString()); file = root.FindDirectory(expected).FindFile("test.html"); Assert.Equal(expected, file.ReadAsString()); subDir.Delete(true); }
public void DirectoryPathCanBeParsed() { var path = "a/b/c"; var root = new MemoryDirectory("root", null); var dir = root.CreateDirectory(path); Assert.Equal("c", dir.Name); Assert.Equal("b", dir.Parent.Name); Assert.Equal("a", dir.Parent.Parent.Name); Assert.Equal(root, dir.Parent.Parent.Parent); }
protected override Result DoOpenDirectory(out IDirectory directory, U8Span path, OpenDirectoryMode mode) { UnsafeHelpers.SkipParamInit(out directory); Result rs = FsTable.GetDirectory(new U8Span(path), out DirectoryNode dirNode); if (rs.IsFailure()) { return(rs); } directory = new MemoryDirectory(dirNode, mode); return(Result.Success); }
protected override Result DoOpenDirectory(out IDirectory directory, U8Span path, OpenDirectoryMode mode) { directory = default; Result rs = FsTable.GetDirectory(new U8Span(path), out DirectoryNode dirNode); if (rs.IsFailure()) { return(rs); } directory = new MemoryDirectory(dirNode, mode); return(Result.Success); }
public static void Search(string Key, MemoryDirectory memory, Action <Entry, BasicTinEyeSearch.Entry, BasicPirateBayImage.Entry> AddEntry) { Search(Key, imdb => { var _tineye = default(BasicTinEyeSearch.Entry); var _bayimg = default(BasicPirateBayImage.Entry); BasicTinEyeSearch.Search(imdb.MediumPosterImage, tineye => { _tineye = tineye; var tineye_memory = default(DirectoryInfo); var bayimg_memory = default(DirectoryInfo); if (memory != null) { tineye_memory = memory[tineye.Hash]; bayimg_memory = tineye_memory.FirstDirectoryOrDefault(); if (bayimg_memory != null) { _bayimg = new BasicPirateBayImage.Entry(bayimg_memory.Name); } } if (_bayimg == null) { Native.API.set_time_limit(5); BasicPirateBayImage.Clone(tineye.QueryLink.ToUri(), bayimg => { _bayimg = bayimg; if (tineye_memory != null) { bayimg_memory = tineye_memory.CreateSubdirectory(bayimg.Key); } } ); } } ); AddEntry(imdb, _tineye, _bayimg); } ); }
public void FilePathWithDirectoryCanBeParsed() { var path = "a/b/c.txt"; var expected = "test"; var dir = new MemoryDirectory("root", null); var file = dir.CreateFileFromText(path, expected); string actual; using (StreamReader reader = new StreamReader(file.StreamProvider.OpenRead())) { actual = reader.ReadToEnd(); } Assert.Equal(expected, actual); Assert.Equal("b", file.Directory.Name); Assert.Equal("a", file.Directory.Parent.Name); Assert.Equal(dir, file.Directory.Parent.Parent); }
protected override Result DoOpenDirectory(out IDirectory directory, U8Span path, OpenDirectoryMode mode) { UnsafeHelpers.SkipParamInit(out directory); Unsafe.SkipInit(out FsPath normalizedPath); Result rc = PathNormalizer.Normalize(normalizedPath.Str, out _, path, false, false); if (rc.IsFailure()) { return(rc); } rc = FsTable.GetDirectory(normalizedPath, out DirectoryNode dirNode); if (rc.IsFailure()) { return(rc); } directory = new MemoryDirectory(dirNode, mode); return(Result.Success); }
public async Task UploadMemoryDirectoryRecursivelyShouldWork() { var dir = new DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory); var subDir = dir.CreateSubdirectory("test"); using (var writer = File.CreateText(Path.Combine(subDir.FullName, "test.html"))) { writer.Write("Test"); } var subSubDir = subDir.CreateSubdirectory("test"); using (var writer = File.CreateText(Path.Combine(subSubDir.FullName, "test.html"))) { writer.Write("Test"); } var directory = new MemoryDirectory("root", null); directory.CopyFromDisk(subDir); directory.CreateDirectory("memory").CreateFileFromText("memory.txt", "memory"); var ftp = CreateFtp(); var path = "site/wwwroot/"; var folderName = "test/"; ftp.ChangeDirectory(path); await ftp.MakeDirectoryAsync(folderName); Assert.True(await ftp.DirectoryExistsAsync(folderName)); await ftp.UploadDirectoryRecursivelyAsync(folderName, directory); Assert.True(await ftp.FileExistsAsync("test/test/test.html")); Assert.True(await ftp.FileExistsAsync("test/memory/memory.txt")); await ftp.RemoveDirectoryRecursivelyAsync(folderName); Assert.False(await ftp.DirectoryExistsAsync(folderName)); subDir.Delete(true); }
// TODO: convert this class to extension methods for IDirectory /// <summary> /// This method is used to convert legacy code to IDirectory source. /// </summary> /// <returns></returns> public IDirectory ToDirectory() { var root = new MemoryDirectory("root", null); var bin = root.CreateDirectory("bin"); // generated all text based files. they are mostly configuration files. if (TextFiles != null) { foreach (var textFileName in TextFiles.Keys) { root.CreateFileFromText(textFileName, TextFiles[textFileName]); } } var currentAssemblyLocation = Assembly.GetExecutingAssembly().Location; if (!BinaryFiles.Contains(currentAssemblyLocation)) { BinaryFiles.Add(currentAssemblyLocation); } // copy all required binary files if (BinaryFiles != null) { foreach (var file in BinaryFiles) { var fileInfo = new FileInfo(file); if (fileInfo.Exists) { bin.CreateFileFromDisk(fileInfo.Name, fileInfo); } } } return(root); }
public void DiskFileCanBeRead() { string expected = "test"; var dir = new DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory); var subDir = dir.CreateSubdirectory(expected); using (var writer = File.CreateText(Path.Combine(subDir.FullName, "test.html"))) { writer.Write(expected); } var root = new MemoryDirectory("root", null); var file = root.CreateFileFromDisk("test.html", subDir.GetFiles().First()); string actual; using (StreamReader reader = new StreamReader(file.StreamProvider.OpenRead())) { actual = reader.ReadToEnd(); } Assert.Equal(expected, actual); subDir.Delete(true); }
public virtual void PostVisit(MemoryDirectory d) { }
public static void Search(string Key, MemoryDirectory memory, Action<Entry, BasicTinEyeSearch.Entry, BasicPirateBayImage.Entry> AddEntry) { Search(Key, imdb => { var _tineye = default(BasicTinEyeSearch.Entry); var _bayimg = default(BasicPirateBayImage.Entry); BasicTinEyeSearch.Search(imdb.MediumPosterImage, tineye => { _tineye = tineye; var tineye_memory = default(DirectoryInfo); var bayimg_memory = default(DirectoryInfo); if (memory != null) { tineye_memory = memory[tineye.Hash]; bayimg_memory = tineye_memory.FirstDirectoryOrDefault(); if (bayimg_memory != null) _bayimg = new BasicPirateBayImage.Entry(bayimg_memory.Name); } if (_bayimg == null) { Native.API.set_time_limit(5); BasicPirateBayImage.Clone(tineye.QueryLink.ToUri(), bayimg => { _bayimg = bayimg; if (tineye_memory != null) { bayimg_memory = tineye_memory.CreateSubdirectory(bayimg.Key); } } ); } } ); AddEntry(imdb, _tineye, _bayimg); } ); }
public MemoryFileSystem(MemoryConfiguration config) { this.Root = new MemoryDirectory(null, string.Empty); this.Root.Create().Wait(); }
private static void DemoGetPosterViaTinEyeAndStreamItViaPirateBayImage(string MovieTitle, string Year, MemoryDirectory memory) { Console.WriteLine(); Console.WriteLine(MovieTitle); BasicIMDBAliasSearch.SearchSingle(MovieTitle, Year, e => { BasicIMDBCrawler.Search(e.Key, memory, (imdb, tineye, bayimg) => { new IHTMLImage { src = bayimg.Image.ToString(), title = imdb.SmartTitle }.ToString().ToLink( BasicIMDBCrawler.ToLink(e.Key) ).ToConsole(); } ); } ); }
private static void ShowPirateBayFastWithMemory() { var memory = new MemoryDirectory(new DirectoryInfo("memory")); Console.WriteLine("memory: " + memory.Count); Console.WriteLine("<ol>"); BasicPirateBaySearch.Search( k => memory.Contains(k.Hash), (entry, deferred) => { var hash = entry.Name.ToMD5Bytes().ToHexString(); if (memory.Contains(hash)) Console.WriteLine("<li style='color:gray; font-size: small;'>"); else { memory.Add(hash); Console.WriteLine("<li>"); } Console.WriteLine(entry.Name.ToLink("http://thepiratebay.org" + entry.Link, hash)); Console.WriteLine(" | " + "torrent".ToLink(entry.TorrentLink)); Console.WriteLine(" | " + entry.CommentText); Console.WriteLine(" | " + entry.Size); Console.WriteLine(" | " + entry.Seeders); Console.WriteLine(" | " + entry.Leechers); Console.WriteLine("</li>"); } ); Console.WriteLine("</ol>"); Console.WriteLine("memory: " + memory.Count); }
public MockFile(string path, MemoryDirectory directory = null) : base(path, directory ?? new MockDirectory("z:\\Fake\\Mock\\Dir")) { }