You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
import path from "path";
|
|
|
|
import fs from "fs";
|
|
|
|
|
|
|
|
import { CONF_DIR } from "utils/config/config";
|
|
|
|
import createLogger from "utils/logger";
|
|
|
|
|
|
|
|
const logger = createLogger("configFileService");
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @param {import("next").NextApiRequest} req
|
|
|
|
* @param {import("next").NextApiResponse} res
|
|
|
|
*/
|
|
|
|
export default async function handler(req, res) {
|
|
|
|
const { path: relativePath } = req.query;
|
|
|
|
|
|
|
|
// only two supported files, for now
|
|
|
|
if (!["custom.css", "custom.js"].includes(relativePath)) {
|
|
|
|
return res.status(422).end("Unsupported file");
|
|
|
|
}
|
|
|
|
|
|
|
|
const filePath = path.join(CONF_DIR, relativePath);
|
|
|
|
|
|
|
|
try {
|
|
|
|
// Read the content of the file or return empty content
|
|
|
|
const fileContent = fs.existsSync(filePath) ? fs.readFileSync(filePath, "utf-8") : "";
|
|
|
|
// hard-coded since we only support two known files for now
|
|
|
|
const mimeType = relativePath === "custom.css" ? "text/css" : "text/javascript";
|
|
|
|
res.setHeader("Content-Type", mimeType);
|
|
|
|
return res.status(200).send(fileContent);
|
|
|
|
} catch (error) {
|
|
|
|
if (error) logger.error(error);
|
|
|
|
return res.status(500).end("Internal Server Error");
|
|
|
|
}
|
|
|
|
}
|