@@ -318,37 +318,35 @@ function main() {
318318
319319 F . route ( '/*' , function ( ) {
320320 var self = this ;
321- var filename = path . join ( self . url , 'index.html' ) . substring ( 1 ) ;
321+ var dir = F . path . public ( self . url . substring ( 1 ) ) ;
322322
323- F . path . exists ( filename , function ( e ) {
323+ fs . readdir ( dir , function ( err , items ) {
324324
325- if ( e )
326- return self . file ( filename , '' ) ;
325+ var render = function ( controller , directories , files ) {
326+ controller . content ( '<!DOCTYPE html><html><head><title>Directory listing: {0}</title><meta charset="utf-8" /><style>body{font-family:Arial;font-size:16px;padding:10px 30px 30px}a{display:block}.directory:last-child{margin-bottom:10px}.directory{padding:2px 10px;background-color:#F8F8F8;margin-bottom:2px;text-decoration:none;color:black;font-weight:bold;font-size:18px}.directory-back{text-decoration:none;font-size:50px;margin:0 0 10px 5px;color:gray}.file{color:gray;text-decoration:none;font-size:14px;padding:3px 10px;border-bottom:1px solid #F0F0F0;}.file span{float:right;font-size:12px;margin:2px 0 0 0;color:#A0A0A0}.file:hover{background-color:#F8F8F8}</style></head><body><div class="directories">{1}</div><div class="files">{2}</div></body></html>' . format ( controller . url , directories . join ( '' ) , files . join ( '' ) ) , 'text/html' )
327+ } ;
327328
328- var dir = F . path . public ( self . url . substring ( 1 ) ) ;
329+ var directories = [ ] ;
330+ var files = [ ] ;
329331
330- fs . readdir ( dir , function ( err , items ) {
332+ if ( self . url !== '/' )
333+ directories . push ( '<a href=".." class="directory-back">..</a>' ) ;
331334
332- var directories = [ ] ;
333- var files = [ ] ;
335+ if ( err )
336+ return render ( self , directories , files ) ;
334337
335- if ( self . url !== '/' )
336- directories . push ( '<a href=".." class="directory-back">..</a>' ) ;
338+ items . wait ( function ( item , next ) {
339+ var filename = path . join ( dir , item ) ;
340+ fs . stat ( filename , function ( err , info ) {
337341
338- items . wait ( function ( item , next ) {
339- var filename = path . join ( dir , item ) ;
340- fs . stat ( filename , function ( err , info ) {
342+ if ( info . isFile ( ) )
343+ files . push ( '<a href="{1}" class="file">{0}<span>{2} kB</span></a>' . format ( item , self . url + item , ( info . size / 1024 ) . format ( 2 ) ) ) ;
344+ else
345+ directories . push ( '<a href="{1}/" class="directory">{0}</a>' . format ( item , self . url + item ) ) ;
341346
342- if ( info . isFile ( ) )
343- files . push ( '<a href="{1}" class="file">{0}<span>{2} kB</span></a>' . format ( item , self . url + item , ( info . size / 1024 ) . format ( 2 ) ) ) ;
344- else
345- directories . push ( '<a href="{1}/" class="directory">{0}</a>' . format ( item , self . url + item ) ) ;
346-
347- next ( ) ;
348- } ) ;
349- } , ( ) => self . content ( '<!DOCTYPE html><html><head><title>Directory listing: {0}</title><meta charset="utf-8" /><style>body{font-family:Arial;font-size:16px;padding:10px 30px 30px}a{display:block}.directory:last-child{margin-bottom:10px}.directory{padding:2px 10px;background-color:#F8F8F8;margin-bottom:2px;text-decoration:none;color:black;font-weight:bold;font-size:18px}.directory-back{text-decoration:none;font-size:50px;margin:0 0 10px 5px;color:gray}.file{color:gray;text-decoration:none;font-size:14px;padding:3px 10px;border-bottom:1px solid #F0F0F0;}.file span{float:right;font-size:12px;margin:2px 0 0 0;color:#A0A0A0}.file:hover{background-color:#F8F8F8}</style></head><body><div class="directories">{1}</div><div class="files">{2}</div></body></html>' . format ( self . url , directories . join ( '' ) , files . join ( '' ) ) , 'text/html' ) ) ;
350-
351- } ) ;
347+ next ( ) ;
348+ } ) ;
349+ } , ( ) => render ( self , directories , files ) ) ;
352350 } ) ;
353351 } ) ;
354352
0 commit comments