From e719e16f29ea744da220df27ca08f537673f9719 Mon Sep 17 00:00:00 2001 From: comdiv Date: Wed, 2 Dec 2015 00:04:49 +0500 Subject: [PATCH] feat(config): mime config option support Allows to setup required mime-type to extensions mapping (for ex. fix default *.ts to video/mp2t mapping) Closes #1735 --- lib/middleware/common.js | 13 +++++++++++++ lib/web-server.js | 1 + test/unit/web-server.spec.js | 8 +++++++- 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/lib/middleware/common.js b/lib/middleware/common.js index b13433e64..510819e1b 100644 --- a/lib/middleware/common.js +++ b/lib/middleware/common.js @@ -4,6 +4,8 @@ var mime = require('mime') var log = require('../logger').create('web-server') +var helper = require('../helper') +var _ = helper._ var PromiseContainer = function () { var promise @@ -92,9 +94,20 @@ var setHeavyCacheHeaders = function (response) { response.setHeader('Cache-Control', 'public, max-age=31536000') } +var initializeMimeTypes = function (config) { + if (config && config.mime) { + _.forEach(config.mime, function (value, key) { + var map = {} + map[key] = value + mime.define(map) + }) + } +} + // PUBLIC API exports.PromiseContainer = PromiseContainer exports.createServeFile = createServeFile exports.setNoCacheHeaders = setNoCacheHeaders exports.setHeavyCacheHeaders = setHeavyCacheHeaders +exports.initializeMimeTypes = initializeMimeTypes exports.serve404 = serve404 diff --git a/lib/web-server.js b/lib/web-server.js index fbb9c6eb4..89b5165bd 100644 --- a/lib/web-server.js +++ b/lib/web-server.js @@ -31,6 +31,7 @@ createCustomHandler.$inject = ['customFileHandlers', 'config.basePath'] var createWebServer = function (injector, emitter, fileList) { var config = injector.get('config') + common.initializeMimeTypes(config) var serveStaticFile = common.createServeFile(fs, path.normalize(__dirname + '/../static'), config) var serveFile = common.createServeFile(fs, null, config) var filesPromise = new common.PromiseContainer() diff --git a/test/unit/web-server.spec.js b/test/unit/web-server.spec.js index 4592f5b1e..57fe6e9c0 100644 --- a/test/unit/web-server.spec.js +++ b/test/unit/web-server.spec.js @@ -4,6 +4,7 @@ import request from 'supertest-as-promised' import di from 'di' import mocks from 'mocks' import fs from 'fs' +import mime from 'mime' describe('web-server', () => { var server @@ -45,7 +46,8 @@ describe('web-server', () => { basePath: '/base/path', urlRoot: '/', middleware: ['custom'], - middlewareResponse: 'hello middleware!' + middlewareResponse: 'hello middleware!', + mime: {'custom/custom': ['custom']} } var injector = new di.Injector([{ @@ -71,6 +73,10 @@ describe('web-server', () => { server = injector.invoke(m.createWebServer) }) + it('should setup mime', () => { + expect(mime.lookup('/my.custom')).to.equal('custom/custom') + }) + it('should serve client.html', () => { servedFiles(new Set())