diff --git a/src/de/tudbut/tryumph/example/FileServer.java b/src/de/tudbut/tryumph/example/FileServer.java index d6172fa..9b9d1ee 100644 --- a/src/de/tudbut/tryumph/example/FileServer.java +++ b/src/de/tudbut/tryumph/example/FileServer.java @@ -57,10 +57,13 @@ public class FileServer implements IRequestCatcher, RequestHandler.Listener { } private String fileContent(Request request, String s) { - String r = request.context.file(s); + String r; if(!s.endsWith(".html") && !s.endsWith(".htm")) { + r = request.context.file(s); r = "
" + r.replace("<", "<").replace(">", ">") + "
"; } + else + r = request.context.fileUTF(s); return r; } diff --git a/src/de/tudbut/tryumph/server/BrowserContext.java b/src/de/tudbut/tryumph/server/BrowserContext.java index c7747e1..09838d7 100644 --- a/src/de/tudbut/tryumph/server/BrowserContext.java +++ b/src/de/tudbut/tryumph/server/BrowserContext.java @@ -2,6 +2,7 @@ package de.tudbut.tryumph.server; import static de.tudbut.async.Async.*; +import java.io.ByteArrayOutputStream; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; @@ -145,6 +146,32 @@ public class BrowserContext { } return builder.toString(); } + public String fileUTF(String file) { + if(cache.containsKey(file)) + return cache.get(file); + String st = null; + try { + InputStream stream = requestCatcher.getClass().getClassLoader().getResourceAsStream(file); + if(stream == null) + stream = new FileInputStream(file); + ByteArrayOutputStream s = new ByteArrayOutputStream(); + + int i = 0; + while((i = stream.read()) != -1) { + s.write(i); + } + + stream.close(); + s.close(); + st = new String(s.toByteArray()); + if(!TryConfig.nocache) + cache.put(file, st); + } catch (IOException e) { + st = "\n

---CUT---


\n"; + st+= "Error reading rest of file! Sorry."; + } + return st; + } }