private void sendDirectoryListing(RouteContext routeContext, File dir) {
String absoluteDirUri = getUrlPath() + StringUtils.addStart(directory.toPath().relativize(dir.toPath()).toString(), "/");
if (StringUtils.isNullOrEmpty(directoryTemplate)) {
String page = generateDefaultDirectoryListing(routeContext, dir, absoluteDirUri);
routeContext.html().send(page);
} else {
int numFiles = 0;
int numDirs = 0;
long diskUsage = 0;
List<DirEntry> dirEntries = getDirEntries(routeContext, dir, absoluteDirUri);
for (DirEntry dirEntry : dirEntries) {
if (dirEntry.isFile()) {
numFiles++;
diskUsage += dirEntry.getSize();
} else if (dirEntry.isDirectory() && !dirEntry.getName().contains("..")) {
numDirs++;
}
}
routeContext.setLocal("dirUrl", absoluteDirUri);
routeContext.setLocal("dirPath", absoluteDirUri.substring(getUrlPath().length()));
routeContext.setLocal("dirEntries", dirEntries);
routeContext.setLocal("numDirs", numDirs);
routeContext.setLocal("numFiles", numFiles);
routeContext.setLocal("diskUsage", diskUsage);
routeContext.render(directoryTemplate);
}
}