node-web-mvc
Version:
node spring mvc
59 lines (58 loc) • 1.8 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
/**
* @module MediaTypeFactory
* @description 媒体类型工厂
*/
const path_1 = __importDefault(require("path"));
const fs_1 = __importDefault(require("fs"));
const MediaType_1 = __importDefault(require("../MediaType"));
const file = path_1.default.join(__dirname, '../../../../mime.type');
const runtime = {
mimeTypes: null,
};
class MediaTypeFactory {
/**
* 加载所有MIME类型
*/
static load() {
const content = fs_1.default.readFileSync(file).toString('utf-8');
const lines = content.split('\n');
const mediaTypes = {};
lines.forEach((line) => {
if (line[0] !== '#') {
const segments = line.split('\t');
const mediaType = segments.shift();
const exts = (segments.find((s) => !!s) || '').split(' ').filter((s) => !!s);
exts.forEach((ext) => {
mediaTypes['.' + ext] = new MediaType_1.default(mediaType);
});
}
});
return mediaTypes;
}
/**
* 当前支持的所有MIME类型
*/
static get mimeTypes() {
if (!runtime.mimeTypes) {
runtime.mimeTypes = this.load();
}
return runtime.mimeTypes;
}
/**
* 获取指定文件的媒体类型
* @param filename
*/
static getMediaType(filename) {
if (!filename) {
return null;
}
const ext = path_1.default.extname(filename).toLowerCase();
return this.mimeTypes[ext];
}
}
exports.default = MediaTypeFactory;