directory listing builder implementation

main
sigonasr2, Sig, Sigo 3 years ago
parent a8d0393194
commit 92d9a14057
  1. 2
      out/codeBackground
  2. 31
      sigPlace.java
  3. 13
      sigServer.java

@ -29,7 +29,7 @@
//Send default directory.
CreateRequest(client,"200","OK","testfile.html");
} else {
CreateRequest(client,"200","OK",requestloc.replace("/",""));
CreateRequest(client,"200","OK",requestloc.replaceFirst("/",""));
}
}
} else {

@ -1,7 +1,6 @@
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.CopyOption;
import java.nio.file.DirectoryNotEmptyException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
@ -13,15 +12,14 @@ import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
public class sigPlace {
final static String ROOTDIR = "sitefiles";
final static String REFDIR = "ref";
final static String OUTDIR = "out";
final static String DIRECTORYLISTING_FILENAME = "DIRECTORY_LISTING";
static int PORT = 8080;
final static HashMap<String,String> map = new HashMap<>(Map.ofEntries(
@ -108,7 +106,19 @@ public class sigPlace {
}
}catch (IOException e) {
e.printStackTrace();
System.err.println("Copying files over failed!");
return;
}
System.out.println("Building directory listings...");
try {
buildDirectoryListings();
} catch (IOException e) {
e.printStackTrace();
System.err.println("Failed to build directory listings!");
return;
}
System.out.println("Site has been built into the "+OUTDIR+" directory.");
ExportCodeFile();
@ -133,6 +143,21 @@ public class sigPlace {
}
});
}
static void buildDirectoryListings()
throws IOException {
String startingPath=Paths.get(sigPlace.OUTDIR).toAbsolutePath().toString();
HashMap<String,List<Path>> map = new HashMap<>();
Iterator<Path> it = Files.walk(Paths.get(sigPlace.OUTDIR)).iterator();
map.put("/",new ArrayList<Path>());
while (it.hasNext()) {
Path f = it.next();
String myKey = f.toAbsolutePath().toString().replace(startingPath,"").replace(f.getFileName().toString(),"");
System.out.println(myKey+","+f);
map.putIfAbsent(myKey,new ArrayList<Path>());
map.get(myKey).add(f);
}
System.out.println(map);
}
private static boolean isArticleFile(Path f) {
return f.getFileName().toString().contains(".article");
}

@ -45,7 +45,7 @@ public class sigServer {
//Send default directory.
CreateRequest(client,"200","OK","testfile.html");
} else {
CreateRequest(client,"200","OK",requestloc.replace("/",""));
CreateRequest(client,"200","OK",requestloc.replaceFirst("/",""));
}
}
} else {
@ -83,10 +83,15 @@ public class sigServer {
OutputStream clientOutput = client.getOutputStream();
if (statusCode.equals("200")) {
if (Files.exists(file)) {
CreateRawRequest(clientOutput,statusCode,statusMsg,Files.probeContentType(file),Files.readAllBytes(file));
String contentType = Files.probeContentType(file);
if (contentType!=null&&contentType.equals("text/html")) {
if (Files.isDirectory(file)) {
CreateRawRequest(clientOutput,statusCode,statusMsg,"text/html",Files.readAllBytes(Paths.get(sigPlace.OUTDIR,string,sigPlace.DIRECTORYLISTING_FILENAME)));
clientOutput.write(("<div class=\"generateTime\">Webpage generated in "+(System.currentTimeMillis()-startTime)+"ms</div>\r\n").getBytes());
} else {
CreateRawRequest(clientOutput,statusCode,statusMsg,Files.probeContentType(file),Files.readAllBytes(file));
String contentType = Files.probeContentType(file);
if (contentType!=null&&contentType.equals("text/html")) {
clientOutput.write(("<div class=\"generateTime\">Webpage generated in "+(System.currentTimeMillis()-startTime)+"ms</div>\r\n").getBytes());
}
}
} else {
CreateRawRequest(clientOutput,statusCode,statusMsg,"text/html","We're sorry, your webpage is in another castle!".getBytes());

Loading…
Cancel
Save