var _       = require('lodash'),
    express = require('express'),
    path    = require('path'),
    config  = require('../config'),
    utils   = require('../utils');

function isBlackListedFileType(file) {
    var blackListedFileTypes = ['.hbs', '.md', '.json'],
        ext = path.extname(file);
    return _.contains(blackListedFileTypes, ext);
}

function forwardToExpressStatic(req, res, next) {
    if (!req.app.get('activeTheme')) {
        next();
    } else {
        express.static(
            path.join(config.paths.themePath, req.app.get('activeTheme')),
            {maxAge: utils.ONE_YEAR_MS}
        )(req, res, next);
    }
}

function staticTheme() {
    return function blackListStatic(req, res, next) {
        if (isBlackListedFileType(req.path)) {
            return next();
        }
        return forwardToExpressStatic(req, res, next);
    };
}

module.exports = staticTheme;
