# Custom JavaScript code added within a `<script>` block to each page
var javascript_header: nullable Writable = null is writable
+ # Caching attributes of served files, used as the `cache-control` field in response headers
+ var cache_control = "public, max-age=360" is writable
+
+ # Show directory listing?
+ var show_directory_listing = true is writable
+
redef fun answer(request, turi)
do
var response
end
end
- response = new HttpResponse(200)
- if local_file.file_stat.is_dir then
+ var is_dir = local_file.file_stat.is_dir
+ if show_directory_listing and is_dir then
# Show the directory listing
var title = turi
var files = local_file.files
+ alpha_comparator.sort files
+
var links = new Array[String]
if turi.length > 1 then
var path = (request.uri + "/..").simplify_path
header_code = header.write_to_string
else header_code = ""
+ response = new HttpResponse(200)
response.body = """
<!DOCTYPE html>
<head>
</html>"""
response.header["Content-Type"] = media_types["html"].as(not null)
- else
+ else if not is_dir then
# It's a single file
+ response = new HttpResponse(200)
response.files.add local_file
var ext = local_file.file_extension
response.header["Content-Type"] = media_type
else response.header["Content-Type"] = "application/octet-stream"
end
- end
+ # Cache control
+ response.header["cache-control"] = cache_control
+
+ else response = new HttpResponse(404)
else response = new HttpResponse(404)
else response = new HttpResponse(403)