private string BuildDirHTML(Dir422 Directory) { var html = new System.Text.StringBuilder("<html>"); html.Append("<h1>Folders</h1>"); // PERCENT ENCODE HERE //get rid of ( # reserved html key)!!!!!! foreach (Dir422 Dir in Directory.GetDirs()) { html.AppendFormat( "<a href=\"{0}\">{1}</a><br>", Utility.AbsolutePath(Dir), Dir.Name ); } html.Append("<h1>Files</h1>"); foreach (File422 file in Directory.GetFiles()) { html.AppendFormat( "<a href=\"{0}\">{1}</a><br>", Utility.AbsolutePath(file.Parent) + "/" + file.Name, file.Name ); } html.Append("<html>"); return(html.ToString()); }
string BuildDirHTML(Dir422 directory) { var root = directory.Name + "/"; var files = directory.GetFiles(); var dirs = directory.GetDirs(); Console.WriteLine("inside build {0} dirs, {1} files", dirs.Count, files.Count); var dirStr = ""; var path = getPath(directory); Console.WriteLine("-------------------------"); Console.WriteLine(path); foreach (var dir in dirs) { dirStr += String.Format(RESPONSE_ENTRY_FORMAT, path + dir.Name, dir.Name); } var fileStr = ""; foreach (var file in files) { fileStr += String.Format(RESPONSE_ENTRY_FORMAT, path + file.Name, file.Name); } return(String.Format(RESPONSE_FORMAT, dirStr, fileStr)); }
private bool ContainsFileRecursive(string fileName, Dir422 dir) { IList <File422> files = dir.GetFiles(); foreach (File422 file in files) { if (file.Name == fileName) { return(true); } } // Get the current dir's subdirs IList <Dir422> subDirs = dir.GetDirs(); //Here we have looked at all the files in our directory and did nt // find our filename, now we need to look in a subdirectory foreach (Dir422 subDir in subDirs) { if (ContainsFileRecursive(fileName, subDir)) { return(true); } } return(false); }
string BuildDirHTML(Dir422 dir) { _cwd = new StringBuilder(); // Generate Html var html = new StringBuilder("<html> <h1>Folders</h1>"); // Append dirs foreach (Dir422 d in dir.GetDirs()) { // Construct cwd href as we go string cwd = ConstructCWD(dir); Console.WriteLine("cwd: " + cwd.ToString()); Console.WriteLine("d.name: " + d.Name); html.AppendFormat("<a href=\"{0}/{1}\">{1}</a> <br>", cwd, d.Name); } html.AppendLine("<h1>Files</h1>"); foreach (File422 file in dir.GetFiles()) { string cwd = ConstructCWD(file); Console.WriteLine("cwd: " + cwd.ToString()); Console.WriteLine("file.name: " + file.Name); html.AppendFormat("<a href=\"{0}/{1}\">{1}</a> <br>", cwd, file.Name); } html.AppendLine("</html>"); return(html.ToString()); }
string BuildDirHTML(Dir422 directory) { StringBuilder builder = new StringBuilder(); // Styling builder.Append("<html>"); builder.Append("<head><style>"); // It's gotta look stylish right? builder.Append(" tr:nth-child(even) {background-color: #f2f2f2} "); builder.Append(" table { text-align : center; border: 2px solid black } "); builder.Append(" .center { position: absolute; width : 75%; left: 12.5% } "); builder.Append(" h1 { font-size: 4em } "); builder.Append(" a { font-size: 2em } "); builder.Append("</style>"); builder.Append("</head>"); builder.Append("<body style='text-align:center'><div class='center'>"); builder.Append("<h1>Directories</h1>"); // Get all directories builder.Append("<table width='100%'>"); foreach (var dir in directory.GetDirs()) { // Need to get rid of '**/{current_dir}/' in uri string uri = ServiceURI + "/" + FullPath.Make(directory, Uri.EscapeDataString(dir.Name)).Replace(fileSystem.GetRoot().Name + "/", ""); builder.Append("<tr><td><a href='" + uri + "'>" + dir.Name + "</a></td></tr>"); } builder.Append("</table>"); builder.Append("<h1>Files</h1>"); // Get all files builder.Append("<table width='100%'>"); foreach (var file in directory.GetFiles()) { // Need to get rid of '**/{current_dir}/' in uri string uri = ServiceURI + "/" + FullPath.Make(directory, Uri.EscapeDataString(file.Name)).Replace(fileSystem.GetRoot().Name + "/", ""); builder.Append("<tr><td><a href='" + uri + "'>" + file.Name + "</a></td></tr>"); } builder.Append("</table>"); // Add the abillity to upload files if (allowUploads) { builder.Append(SCRIPT); builder.AppendFormat( "<hr><h3 id='uploadHdr'>Upload</h3><br>" + "<input id=\"uploader\" type='file' " + "onchange='selectedFileChanged(this,\"{0}\")' /><hr>", GetHREF(directory, true)); } builder.Append("</div></body></html>"); return(builder.ToString()); }
private string BuildDirHTML(Dir422 directory) { StringBuilder html = new StringBuilder(""); //Files String dirPath = ""; Dir422 temp = directory; while (temp.Parent != null) { dirPath = temp.Name + "/" + dirPath; temp = temp.Parent; } dirPath = ServiceURI + "/" + dirPath; if (directory.GetFiles().Count > 0) { html.AppendLine("<h1 style=\"color:black;\">Files</h1>"); } foreach (File422 file in directory.GetFiles()) { //string name = PercentEncoding(file.Name); //string href = dirPath + name; string href = dirPath + file.Name; html.AppendFormat("<a href=\"{0}\">{1}</a> <br>", href, file.Name); } //Directories //General Note: Don't forget percent encoding and decoding. if (directory.GetDirs().Count > 0) { html.AppendLine("<hr></hr><h1 style=\"color:black;\">Folders</h1>"); } foreach (Dir422 d in directory.GetDirs()) { //string name = PercentEncoding(d.Name); //string href = dirPath + name; string href = dirPath + d.Name; html.AppendFormat("<a href=\"{0}\">{1}</a> <br>", href, d.Name); } return(html.ToString()); }
private string BuildDirHTML(Dir422 directory) { StringBuilder foldersBuilder = new StringBuilder(); StringBuilder filesBuilder = new StringBuilder(); var dirs = directory.GetDirs(); var files = directory.GetFiles(); const string nodeTemplate = "<a href=\"" + _route + "{0}\">{1}</a><br>"; string path = ""; if (dirs.Count > 0) { path = BuildPath(directory); foldersBuilder.Append("<h1>Folders</h1>"); foreach (Dir422 dir in dirs) { string dirName = dir.Name.Replace("#", "%23"); foldersBuilder.Append( String.Format(nodeTemplate, path + "/" + dirName, dir.Name) ); } } if (files.Count > 0) { path = BuildPath(directory); filesBuilder.Append("<h1>Files</h1>"); foreach (File422 file in files) { string fileName = file.Name.Replace("#", "%23"); filesBuilder.Append( String.Format(nodeTemplate, path + "/" + fileName, file.Name) ); } } string formattedResponse = ""; if (files.Count == 0 && dirs.Count == 0) { formattedResponse = "<html><h1>Empty Directory.</h1></html>"; } else { formattedResponse = String.Format("<html>{0}{1}</html>", foldersBuilder.ToString(), filesBuilder.ToString()); } return(formattedResponse); }
public void StdFSDirGetFilesTest() { Dir422 b = root.GetDir("two").GetDir("a").GetDir("b"); b.CreateFile("file1.txt"); b.CreateFile("file2.txt"); IList <File422> files = b.GetFiles(); Assert.AreEqual(2, files.Count); }
public void MemFSDirGetFilesTest() { Dir422 b = root.GetDir("two").GetDir("a").GetDir("b"); File422 file1 = b.CreateFile("file1.txt"); File422 file2 = b.CreateFile("file2.txt"); IList <File422> files = b.GetFiles(); Assert.AreEqual(2, files.Count); Assert.AreSame(file1, files[files.IndexOf(file1)]); Assert.AreSame(file2, files[files.IndexOf(file2)]); }
private void RespondWithList(Dir422 dir, WebRequest req) { var html = new System.Text.StringBuilder("<html>"); var files = dir.GetFiles(); var dirs = dir.GetDirs(); string dirPath = ""; Dir422 temp = dir; dirPath = "/files"; string tempPath = ""; while (temp.Parent != null) { tempPath = "/" + temp.Name + tempPath; temp = temp.Parent; } dirPath = dirPath + tempPath + "/"; html.Append("<h1> Folders</h1>"); foreach (var d in dirs) { string href = dirPath + d.Name; html.AppendFormat("<a href=\"{0}\">{1}</a><br />", href, d.Name); } html.Append("<h1> Files</h1>"); foreach (var f in files) { // makesure dirPath has only one / at the end // TODO string href = dirPath + f.Name; html.AppendFormat("<a href=\"{0}\">{1}</a><br />", href, f.Name); } html.Append("</HTML>"); req.WriteHTMLResponse(html.ToString()); Console.WriteLine("SENT LIST"); return; }
public override bool ContainsFile(string fileName, bool recursive) { if (fileName.IndexOfAny(Path.GetInvalidFileNameChars()) >= 0) { return(false); } bool found = false; if (recursive == false) { for (int i = 0; i < _files.Count && found != true; i++) { if (_directories[i].Name == fileName) { found = true; } } return(found); } Queue <Dir422> Dirs = new Queue <Dir422>(); Dirs.Enqueue(this); while (!found && Dirs.Count > 0) { //get top folder Dir422 temp = Dirs.Dequeue(); //look through it's directories and see if they are what we want foreach (var d in temp.GetFiles()) { if (fileName == d.Name) { found = true; } // enqueue all the directories so we can contiune searching deeper foreach (var s in temp.GetDirs()) { Dirs.Enqueue(s); } } } return(found); }
private string BuildDirHTML(Dir422 directory) { var html = new System.Text.StringBuilder("<html>"); html.Append("<h1>Files</h1>"); foreach (File422 file in directory.GetFiles()) { string path = GetPath(file.Parent); path += "/" + file.Name; // percent incode from our filename path = Uri.EscapeUriString(path); html.AppendFormat( "<a href=\"{0}\">{1}</a>", path, file.Name ); html.Append("<br>"); } html.Append("<h1>Directories</h1>"); foreach (Dir422 dir in directory.GetDirs()) { string path = GetPath(dir); html.AppendFormat( "<a href=\"{0}\">{1}</a>", path, dir.Name ); html.Append("<br>"); } html.AppendLine("</html>"); return(html.ToString()); }
//when a directory is requested private void RespondWithList(Dir422 dir, WebRequest req) { var html = new System.Text.StringBuilder("<html>"); //DIR STUFF html.Append("<h1>Folders</h1>"); foreach (Dir422 directory in dir.GetDirs()) { html.Append(BuildDirHTML(directory)); } //FILE STUFF html.Append("<h1>Files</h1>"); foreach (File422 file in dir.GetFiles()) { html.AppendFormat(BuildFileHTML(file)); } html.AppendLine("</html>"); req.WriteHtmlResponse(html.ToString()); }
String BuildDirHTML(Dir422 directory) { var html = new StringBuilder("<html>"); if (m_allowUploads) { html.AppendLine( @"<script> function selectedFileChanged(fileInput, urlPrefix) { document.getElementById('uploadHdr').innerText = 'Uploading ' + fileInput.files[0].name + '...'; //Need XMLHttpRequest to do the upload if (!window.XMLHttpRequest) { alert('Your browser does not support XMLHttpRequest. Please update your browser.'); return; } //Hide the file selection controls while we upload var uploadControl = document.getElementById('uploader'); if (uploadControl) { uploadControl.style.visibility = 'hidden'; } // Build a URL for the request if (urlPrefix.lastIndexOf('/') != urlPrefix.length - 1) { urlPrefix += '/'; } var uploadURL = urlPrefix + fileInput.files[0].name; //Create the service request object var req = new XMLHttpRequest(); req.open('PUT', uploadURL); req.onreadystatechange = function(){ document.getElementById('uploadHdr').innerText = 'Upload (request status == ' + req.status + ')'; // Un-comment the line below and comment-out the line above if you want the page to // refresh after the upload //location.reload(); }; req.send(fileInput.files[0]); } </script> " ); } html.AppendLine("<h1>Folders</h1>"); //label the beginning of folders foreach (Dir422 dir in directory.GetDirs()) { html.AppendLine( String.Format("<a href=\"{0}\">{1}</a>", GetHREFFromDir422(dir), dir.Name) //FIX THIS, first one should be full path ); html.AppendLine("</br>"); } html.AppendLine("<h1>Files</h1>"); //label the beginning of files foreach (File422 file in directory.GetFiles()) { html.AppendLine( String.Format("<a href=\"{0}\">{1}</a>", GetHREFFromFile422(file), file.Name) //FIX THIS, first one should be full path ); html.AppendLine("</br>"); //append new lines for styling } if (m_allowUploads) //if you can upload, show the upload button and browser { html.AppendFormat( "<hr><h3 id='uploadHdr'>Upload</h3><br>" + "<input id=\"uploader\" type='file' " + "onchange='selectedFileChanged(this,\"{0}\")' /><hr>", uriPath //give a reference to this folder ); } //end uploading area html.AppendLine("</html>"); return(html.ToString()); }
private string BuildDirHTML(Dir422 directory) { var html = new System.Text.StringBuilder("<html>"); // We'll need a bit of script if uploading is allowed if (m_allowUploads) { html.AppendLine( @"<script> function selectedFileChanged(fileInput, urlPrefix) { document.getElementById('uploadHdr').innerText = 'Uploading ' + fileInput.files[0].name + '...'; // Need XMLHttpRequest to do the upload if (!window.XMLHttpRequest) { alert('Your browser does not support XMLHttpRequest. Please update your browser.'); return; } // Hide the file selection controls while we upload var uploadControl = document.getElementById('uploader'); if (uploadControl) { uploadControl.style.visibility = 'hidden'; } // Build a URL for the request if (urlPrefix.lastIndexOf('/') != urlPrefix.length - 1) { urlPrefix += '/'; } var uploadURL = urlPrefix + fileInput.files[0].name; // Create the service request object var req = new XMLHttpRequest(); req.open('PUT', uploadURL); req.onreadystatechange = function() { document.getElementById('uploadHdr').innerText = 'Upload (request status == ' + req.status + ')'; }; req.send(fileInput.files[0]); } </script> " ); } html.Append("<h1>Files</h1>"); foreach (File422 file in directory.GetFiles()) { string path = GetPath(file.Parent); path += "/" + file.Name; // percent incode from our filename path = Uri.EscapeUriString(path); html.AppendFormat( "<a href=\"{0}\">{1}</a>", path, file.Name ); html.Append("<br>"); } html.Append("<h1>Directories</h1>"); foreach (Dir422 dir in directory.GetDirs()) { string path = GetPath(dir); html.AppendFormat( "<a href=\"{0}\">{1}</a>", path, dir.Name ); html.Append("<br>"); } if (m_allowUploads) { html.AppendFormat( "<hr><h3 id='uploadHdr'>Upload</h3><br>" + "<input id=\"uploader\" type='file' " + "onchange='selectedFileChanged(this,\"{0}\")' /><hr>", GetPath(directory)); } html.AppendLine("</html>"); return(html.ToString()); }
string BuildDirHTML(Dir422 dir) { var html = new System.Text.StringBuilder("<html><h1>Folders</h1>"); // Build an HTML file listing // We'll need a bit of script if uploading is allowed if (m_allowUploads) { html.AppendLine( @"<script> function selectedFileChanged(fileInput, urlPrefix) { document.getElementById('uploadHdr').innerText = 'Uploading ' + fileInput.files[0].name + '...'; // Need XMLHttpRequest to do the upload if (!window.XMLHttpRequest) { alert('Your browser does not support XMLHttpRequest. Please update your browser.'); return; } // Hide the file selection controls while we upload var uploadControl = document.getElementById('uploader'); if (uploadControl) { uploadControl.style.visibility = 'hidden'; } // Build a URL for the request if (urlPrefix.lastIndexOf('/') != urlPrefix.length - 1) { urlPrefix += '/'; } var uploadURL = urlPrefix + fileInput.files[0].name; // Create the service request object var req = new XMLHttpRequest(); req.open('PUT', uploadURL); req.onreadystatechange = function() { document.getElementById('uploadHdr').innerText = 'Upload (request status == ' + req.status + ')'; }; req.send(fileInput.files[0]); } </script> "); } foreach (Dir422 directory in dir.GetDirs()) { string path = GetHREF(dir, true) + "/" + directory.Name; string name = directory.Name; name = name.Replace("%20", " "); path = path.Replace("%20", " "); html.AppendFormat("<a href=\'{0}\'>{1}</a><br>", path, name); } html.Append("<br><br><h1>Files</h1>"); foreach (File422 file in dir.GetFiles()) { string path = GetHREF(dir, true) + "/" + file.Name; string name = file.Name; name = name.Replace("%20", " "); path = path.Replace("%20", " "); html.AppendFormat("<a href=\"{0}\">{1}</a><br>", path, name); } // If uploading is allowed, put the uploader at the bottom if (m_allowUploads) { html.Append(GetHREF(dir, true)); html.AppendFormat( "<hr><h3 id='uploadHdr'>Upload</h3><br>" + "<input id=\"uploader\" type='file' " + "onchange='selectedFileChanged(this,\"{0}\")' /><hr>", GetHREF(dir, true)); } return(html.ToString()); }
private string BuildDirHTML(Dir422 directory) { StringBuilder foldersBuilder = new StringBuilder(); StringBuilder filesBuilder = new StringBuilder(); var dirs = directory.GetDirs(); var files = directory.GetFiles(); const string nodeTemplate = "<a href=\"" + _route + "{0}\">{1}</a><br>"; string path = ""; if (dirs.Count > 0) { path = BuildPath(directory); foldersBuilder.Append("<h1>Folders</h1>"); foreach (Dir422 dir in dirs) { string dirName = dir.Name.Replace("#", "%23"); foldersBuilder.Append( String.Format(nodeTemplate, path + "/" + dirName, dir.Name) ); } } if (files.Count > 0) { path = BuildPath(directory); filesBuilder.Append("<h1>Files</h1>"); foreach (File422 file in files) { string fileName = file.Name.Replace("#", "%23"); filesBuilder.Append( String.Format(nodeTemplate, path + "/" + fileName, file.Name) ); } } StringBuilder sb = new StringBuilder("<html>"); if (_allowUploads) { sb.AppendLine(uploadJS); } if (files.Count == 0 && dirs.Count == 0) { sb.Append("<h1>Empty Directory.</h1>"); } else { sb.AppendFormat("{0}{1}", foldersBuilder.ToString(), filesBuilder.ToString()); } if (_allowUploads) { sb.AppendFormat(uploadJS2, _route + BuildPath(directory)); //this second parameter is GetHREF in Evan's hw description } sb.Append("</html>"); return(sb.ToString()); }
private string BuildDirHTML(Dir422 directory) { StringBuilder html = new StringBuilder(""); // We'll need a bit of script if uploading is allowed if (m_allowUploads) { html.AppendLine( @"<script> function selectedFileChanged(fileInput, urlPrefix) { document.getElementById('uploadHdr').innerText = 'Uploading ' + fileInput.files[0].name + '...'; // Need XMLHttpRequest to do the upload if (!window.XMLHttpRequest) { alert('Your browser does not support XMLHttpRequest. Please update your browser.'); return; } // Hide the file selection controls while we upload var uploadControl = document.getElementById('uploader'); if (uploadControl) { uploadControl.style.visibility = 'hidden'; } // Build a URL for the request if (urlPrefix.lastIndexOf('/') != urlPrefix.length - 1) { urlPrefix += '/'; } var uploadURL = urlPrefix + fileInput.files[0].name; // Create the service request object var req = new XMLHttpRequest(); req.open('PUT', uploadURL); req.onreadystatechange = function() { document.getElementById('uploadHdr').innerText = 'Upload (request status == ' + req.status + ')'; }; req.send(fileInput.files[0]); } </script> " ); } //Files String dirPath = ""; Dir422 temp = directory; while (temp.Parent != null) { dirPath = temp.Name + "/" + dirPath; temp = temp.Parent; } dirPath = ServiceURI + "/" + dirPath; if (directory.GetFiles().Count > 0) { html.AppendLine("<h1 style=\"color:black;\">Files</h1>"); } foreach (File422 file in directory.GetFiles()) { //string name = PercentEncoding(file.Name); //string href = dirPath + name; string href = dirPath + file.Name; html.AppendFormat("<a href=\"{0}\">{1}</a> <br>", href, file.Name); } //Directories //General Note: Don't forget percent encoding and decoding. if (directory.GetDirs().Count > 0) { html.AppendLine("<hr></hr><h1 style=\"color:black;\">Folders</h1>"); } foreach (Dir422 d in directory.GetDirs()) { //string name = PercentEncoding(d.Name); //string href = dirPath + name; string href = dirPath + d.Name; html.AppendFormat("<a href=\"{0}\">{1}</a> <br>", href, d.Name); } // If uploading is allowed, put the uploader at the bottom if (m_allowUploads) { html.AppendFormat( "<hr><h3 id='uploadHdr'>Upload</h3><br>" + "<input id=\"uploader\" type='file' " + "onchange='selectedFileChanged(this,\"{0}\")' /><hr>", GetHREF(directory)); } html.Append("</html>"); return(html.ToString()); }
string BuildDirHTML(Dir422 directory) { // Build an HTML file listing var sb = new StringBuilder("<html>"); // We'll need a bit of script if uploading is allowed if (m_allowUploads) { sb.AppendLine( @"<script> function selectedFileChanged(fileInput, urlPrefix) { document.getElementById('uploadHdr').innerText = 'Uploading ' + fileInput.files[0].name + '...'; // Need XMLHttpRequest to do the upload if (!window.XMLHttpRequest) { alert('Your browser does not support XMLHttpRequest. Please update your browser.'); return; } // Hide the file selection controls while we upload var uploadControl = document.getElementById('uploader'); if (uploadControl) { uploadControl.style.visibility = 'hidden'; } // Build a URL for the request if (urlPrefix.lastIndexOf('/') != urlPrefix.length - 1) { urlPrefix += '/'; } var uploadURL = urlPrefix + fileInput.files[0].name; // Create the service request object var req = new XMLHttpRequest(); req.open('PUT', uploadURL); req.onreadystatechange = function() { document.getElementById('uploadHdr').innerText = 'Upload (request status == ' + req.status + ')'; // Un-comment the line below and comment-out the line above if you want the page to // refresh after the upload //location.reload(); }; req.send(fileInput.files[0]); } </script> "); } sb.Append(" <h1>Files</h1>"); //Files first String dirPath = ""; Dir422 temp = directory; while (temp.Parent != null) { dirPath = temp.Name + "/" + dirPath; temp = temp.Parent; } dirPath = ServiceURI + "/" + dirPath; var files = directory.GetFiles(); foreach (File422 file in files) { string href = dirPath + file.Name; sb.AppendFormat("<a href=\"{0}\">{1}</a> <br>", href, file.Name); } sb.Append("<h1>Folders</h1>"); //General Note: Don't forget percent encoding and decoding. foreach (Dir422 dir1 in directory.GetDirs()) { string href = dirPath + dir1.Name; sb.AppendFormat("<a href=\"{0}\">{1}</a> <br>", href, dir1.Name); } // If uploading is allowed, put the uploader at the bottom if (m_allowUploads) { sb.AppendFormat( "<hr><h3 id='uploadHdr'>Upload</h3><br>" + "<input id=\"uploader\" type='file' " + "onchange='selectedFileChanged(this,\"{0}\")' /><hr>", dirPath.TrimEnd('/')); } sb.Append("</html>"); return(sb.ToString()); }