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.
36 lines
1.1 KiB
36 lines
1.1 KiB
1 year ago
|
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) {
|
||
|
logger.error(error);
|
||
|
return res.status(500).end('Internal Server Error');
|
||
|
}
|
||
|
}
|