Mercurial Hosting > luan
comparison 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 |
comparison
equal
deleted
inserted
replaced
1167:7e6f28c769a1 | 1168:312e4cadd508 |
---|---|
12 import luan.webserver.Request; | 12 import luan.webserver.Request; |
13 import luan.webserver.Response; | 13 import luan.webserver.Response; |
14 import luan.webserver.ResponseOutputStream; | 14 import luan.webserver.ResponseOutputStream; |
15 | 15 |
16 | 16 |
17 public final class DirHandler extends FileHandler { | 17 public final class DirHandler implements Handler { |
18 private final FileHandler fileHandler; | |
18 | 19 |
19 public DirHandler() { | 20 public DirHandler(FileHandler fileHandler) { |
20 super(); | 21 this.fileHandler = fileHandler; |
21 } | 22 } |
22 | 23 |
23 public DirHandler(String pathname) { | 24 public Response handle(Request request) { |
24 super(pathname); | 25 try { |
25 } | 26 File file = fileHandler.file(request); |
26 | 27 if( request.path.endsWith("/") && file.isDirectory() ) { |
27 public DirHandler(File dir) { | 28 DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss zzz"); |
28 super(dir); | 29 Response response = new Response(); |
29 } | 30 response.headers.put( "content-type", "text/html; charset=utf-8" ); |
30 | 31 Writer writer = new OutputStreamWriter( new ResponseOutputStream(response) ); |
31 Response handle(Request request,File file) throws IOException { | 32 writer.write( "<!doctype html><html>" ); |
32 if( request.path.endsWith("/") && file.isDirectory() ) { | 33 writer.write( "<head><style>td{padding: 2px 8px}</style></head>" ); |
33 DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss zzz"); | 34 writer.write( "<body>" ); |
34 Response response = new Response(); | 35 writer.write( "<h1>Directory: "+request.path+"</h1>" ); |
35 response.headers.put( "content-type", "text/html; charset=utf-8" ); | 36 writer.write( "<table border=0>" ); |
36 Writer writer = new OutputStreamWriter( new ResponseOutputStream(response) ); | 37 for( File child : file.listFiles() ) { |
37 writer.write( "<!doctype html><html>" ); | 38 String name = child.getName(); |
38 writer.write( "<head><style>td{padding: 2px 8px}</style></head>" ); | 39 if( child.isDirectory() ) |
39 writer.write( "<body>" ); | 40 name += '/'; |
40 writer.write( "<h1>Directory: "+request.path+"</h1>" ); | 41 writer.write( "<tr>" ); |
41 writer.write( "<table border=0>" ); | 42 writer.write( "<td><a href='"+name+"'>"+name+"</a></td>" ); |
42 for( File child : file.listFiles() ) { | 43 writer.write( "<td>"+child.length()+" bytes</td>" ); |
43 String name = child.getName(); | 44 writer.write( "<td>"+fmt.format(new Date(child.lastModified()))+"</td>" ); |
44 if( child.isDirectory() ) | 45 writer.write( "</tr>" ); |
45 name += '/'; | 46 } |
46 writer.write( "<tr>" ); | 47 writer.write( "</table>" ); |
47 writer.write( "<td><a href='"+name+"'>"+name+"</a></td>" ); | 48 writer.write( "</body>" ); |
48 writer.write( "<td>"+child.length()+" bytes</td>" ); | 49 writer.write( "</html>" ); |
49 writer.write( "<td>"+fmt.format(new Date(child.lastModified()))+"</td>" ); | 50 writer.close(); |
50 writer.write( "</tr>" ); | 51 return response; |
51 } | 52 } |
52 writer.write( "</table>" ); | 53 return null; |
53 writer.write( "</body>" ); | 54 } catch(IOException e) { |
54 writer.write( "</html>" ); | 55 throw new RuntimeException(e); |
55 writer.close(); | |
56 return response; | |
57 } | 56 } |
58 return null; | |
59 } | 57 } |
60 } | 58 } |