From 9e6c550b2250226e5c38dc7c09adf92805879f81 Mon Sep 17 00:00:00 2001 From: Nick Downing Date: Sun, 21 Oct 2018 15:24:47 +1100 Subject: [PATCH] Streamline mime_type handling so it is kept in the environment and only explicitly replaced when a directory is generated by jst template (previously returned) --- Server.js | 1 + Site.js | 23 ++++++----------------- 2 files changed, 7 insertions(+), 17 deletions(-) diff --git a/Server.js b/Server.js index 7750dc2..9925556 100644 --- a/Server.js +++ b/Server.js @@ -144,6 +144,7 @@ Server.prototype.respond = async function(request, response, protocol) { } await site.object.respond( { + mime_type: this.mime_type_default, parsed_url: parsed_url, pathname: parsed_url.pathname, pathname_pos: 0, diff --git a/Site.js b/Site.js index 12f182d..0edc74f 100644 --- a/Site.js +++ b/Site.js @@ -193,22 +193,12 @@ Site.prototype.serve_jst = async function(env, pathname) { return false } let out = [] - let mime_type = await jst(env, out) - if (mime_type === undefined) { - // for directories the mime type must be returned, for files we - // can look it up from the pathname starting at current position - // (for files we're guaranteed to be on last pathname component) - let filetype = env.pathname.slice(env.pathname_pos) - assert( - Object.prototype.hasOwnProperty.call(this.server.mime_types, filetype) - ) - mime_type = this.server.mime_types[filetype] - } + await jst(env, out) let data = Buffer.from(out.join('')) console.log( `${env.parsed_url.host} serving ${env.pathname} length ${data.length} from jst` ) - this.server.serve(env.response, 200, mime_type, data) + this.server.serve(env.response, 200, env.mime_type, data) return true } @@ -228,7 +218,7 @@ Site.prototype.serve_less = async function(env, pathname) { console.log( `${env.parsed_url.host} serving ${env.pathname} length ${data.length} from less` ) - this.server.serve(env.response, 200, this.server.mime_types['.css'], data) + this.server.serve(env.response, 200, env.mime_type, data) return true } @@ -245,8 +235,7 @@ Site.prototype.serve_fs = async function(env, pathname) { console.log( `${env.parsed_url.host} serving ${env.pathname} length ${data.length} from fs` ) - let filetype = env.pathname.slice(env.pathname_pos) - this.server.serve(env.response, 200, this.server.mime_types[filetype], data) + this.server.serve(env.response, 200, env.mime_type, data) return true } @@ -267,8 +256,7 @@ Site.prototype.serve_zip = async function(env, pathname) { console.log( `${env.parsed_url.host} serving ${env.pathname} length ${data.length} from zip` ) - let filetype = env.pathname.slice(env.pathname_pos) - this.server.serve(env.response, 200, this.server.mime_types[filetype], data) + this.server.serve(env.response, 200, env.mime_type, data) return true } @@ -340,6 +328,7 @@ Site.prototype.respond = async function(env) { this.server.die(env.response) return } + env.mime_type = this.server.mime_types[filetype] env.pathname_pos = i + k // advance to "." at start of filetype break } -- 2.34.1