ckn.backend
Version:
CKN Framework for Backend
49 lines (44 loc) • 1.66 kB
JavaScript
import {File} from 'ckn.stream';
import {Middleware} from "../core/Middleware.js";
import express from "express";
class StaticContentMiddleware extends Middleware {
constructor(path = "/", publicFolder = "public") {
super();
this.priority = 8;
this.publicFolders = [{
path: path,
publicFolder: publicFolder
}];
}
addPublicFolder(path = "/", publicFolder = "public") {
this.publicFolders.push({
path: path,
publicFolder: publicFolder
});
return this;
}
changePublicFolder(value) {
this.publicFolder = value;
return this;
}
async onStartingServer(backend, next) {
for (let folder of this.publicFolders) {
backend.server.use(folder.path, express.static(folder.publicFolder));
this.log.info("[OK]", `Static folder '${folder.publicFolder}' as path '${folder.path}' has been set.`);
}
for (let application of backend.modules.values()) {
let fullApplicationPublicPath = File.join(application.directory.path, "public");
if (fullApplicationPublicPath.toDirectory().isExist) {
backend.server.use("/" + application.url, express.static(fullApplicationPublicPath));
}
}
for (let theme of backend.themes.values()) {
let themPath = File.join(theme.path, "public");
if (themPath.toDirectory().isExist) {
backend.server.use("/" + theme.path.replace("\\", "/"), express.static(themPath));
}
}
next();
}
}
export {StaticContentMiddleware}