new object $http_page_file: $http_page;
var $root inited = 1;
public method .generate() {
arg page, args;
var stat, head, filename;
filename = args || "/index.html";
// Try to stat the file
(| stat = $file.stat(filename) |);
if (stat && stat[1][1] == "4") {
// If it's a directory, try to stat index.html in that directory
filename += "/index.html";
stat = (| $file.stat(filename) |);
}
if (!stat) {
return $http_lib.error(404, "/" + page + args + " could not be found on this server.");
}
// Now add the headers
head = #[["Content-type", $mime_lib.mime_type(filename)],
["Content-length", stat[2]],
["Date", $http_lib.RFC1123GMT()],
["Last-modified", $http_lib.RFC1123GMT(stat[4])]];
// We return 'file as the first element of the text to be printed.
// When this is done, $http_connection uses a native method to dump
// out the whole file. This keeps us from having to slurp in the
// whole file and return that data--the file could be many megabytes
// in size and this might cause big performace problems!
return [200, head, ['file, filename, stat]];
};