diff src/luan/webserver/handlers/DirHandler.java @ 1168:312e4cadd508

minor
author Franklin Schmidt <fschmidt@gmail.com>
date Thu, 08 Feb 2018 19:17:57 -0700
parents 7e6f28c769a1
children ed6e8bd78c11
line wrap: on
line diff
--- a/src/luan/webserver/handlers/DirHandler.java	Thu Feb 08 19:06:31 2018 -0700
+++ b/src/luan/webserver/handlers/DirHandler.java	Thu Feb 08 19:17:57 2018 -0700
@@ -14,47 +14,45 @@
 import luan.webserver.ResponseOutputStream;
 
 
-public final class DirHandler extends FileHandler {
-
-	public DirHandler() {
-		super();
-	}
+public final class DirHandler implements Handler {
+	private final FileHandler fileHandler;
 
-	public DirHandler(String pathname) {
-		super(pathname);
-	}
-
-	public DirHandler(File dir) {
-		super(dir);
+	public DirHandler(FileHandler fileHandler) {
+		this.fileHandler = fileHandler;
 	}
 
-	Response handle(Request request,File file) throws IOException {
-		if( request.path.endsWith("/") && file.isDirectory() ) {
-			DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss zzz");
-			Response response = new Response();
-			response.headers.put( "content-type", "text/html; charset=utf-8" );
-			Writer writer = new OutputStreamWriter( new ResponseOutputStream(response) );
-			writer.write( "<!doctype html><html>" );
-			writer.write( "<head><style>td{padding: 2px 8px}</style></head>" );
-			writer.write( "<body>" );
-			writer.write( "<h1>Directory: "+request.path+"</h1>" );
-			writer.write( "<table border=0>" );
-			for( File child : file.listFiles() ) {
-				String name = child.getName();
-				if( child.isDirectory() )
-					name += '/';
-				writer.write( "<tr>" );
-				writer.write( "<td><a href='"+name+"'>"+name+"</a></td>" );
-				writer.write( "<td>"+child.length()+" bytes</td>" );
-				writer.write( "<td>"+fmt.format(new Date(child.lastModified()))+"</td>" );
-				writer.write( "</tr>" );
+	public Response handle(Request request) {
+		try {
+			File file = fileHandler.file(request);
+			if( request.path.endsWith("/") && file.isDirectory() ) {
+				DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss zzz");
+				Response response = new Response();
+				response.headers.put( "content-type", "text/html; charset=utf-8" );
+				Writer writer = new OutputStreamWriter( new ResponseOutputStream(response) );
+				writer.write( "<!doctype html><html>" );
+				writer.write( "<head><style>td{padding: 2px 8px}</style></head>" );
+				writer.write( "<body>" );
+				writer.write( "<h1>Directory: "+request.path+"</h1>" );
+				writer.write( "<table border=0>" );
+				for( File child : file.listFiles() ) {
+					String name = child.getName();
+					if( child.isDirectory() )
+						name += '/';
+					writer.write( "<tr>" );
+					writer.write( "<td><a href='"+name+"'>"+name+"</a></td>" );
+					writer.write( "<td>"+child.length()+" bytes</td>" );
+					writer.write( "<td>"+fmt.format(new Date(child.lastModified()))+"</td>" );
+					writer.write( "</tr>" );
+				}
+				writer.write( "</table>" );
+				writer.write( "</body>" );
+				writer.write( "</html>" );
+				writer.close();
+				return response;
 			}
-			writer.write( "</table>" );
-			writer.write( "</body>" );
-			writer.write( "</html>" );
-			writer.close();
-			return response;
+			return null;
+		} catch(IOException e) {
+			throw new RuntimeException(e);
 		}
-		return null;
 	}
 }