#189 load text files from server via filename, does not work for file paths
This commit is contained in:
parent
77e2f5bfff
commit
081c7d521e
3 changed files with 26 additions and 4 deletions
|
@ -2,7 +2,7 @@ import Project from '../models/project';
|
|||
import escapeStringRegexp from 'escape-string-regexp';
|
||||
const startTag = '@fs-';
|
||||
|
||||
function injectMediaUrls(filesToInject, mediaFiles) {
|
||||
function injectMediaUrls(filesToInject, mediaFiles, textFiles, projectId) {
|
||||
filesToInject.forEach(file => {
|
||||
let fileStrings = file.content.match(/(['"])((\\\1|.)*?)\1/gm);
|
||||
const fileStringRegex = /^('|")(?!(http:\/\/|https:\/\/)).*('|")$/i;
|
||||
|
@ -17,7 +17,14 @@ function injectMediaUrls(filesToInject, mediaFiles) {
|
|||
if (mediaFile.name === fileName) {
|
||||
file.content = file.content.replace(filePath, mediaFile.url);
|
||||
}
|
||||
})
|
||||
});
|
||||
if (textFiles) {
|
||||
textFiles.forEach(textFile => {
|
||||
if (textFile.name === fileName) {
|
||||
file.content = file.content.replace(filePath, `/api/projects/${projectId}/${textFile.name}`);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
@ -31,8 +38,9 @@ export function serveProject(req, res) {
|
|||
const jsFiles = files.filter(file => file.name.match(/\.js$/i));
|
||||
const cssFiles = files.filter(file => file.name.match(/\.css$/i));
|
||||
const mediaFiles = files.filter(file => file.url);
|
||||
const textFiles = files.filter(file => file.name.match(/(.+\.json$|.+\.txt$|.+\.csv$)/i) && file.url === undefined);
|
||||
|
||||
injectMediaUrls(jsFiles, mediaFiles);
|
||||
injectMediaUrls(jsFiles, mediaFiles, textFiles, req.params.project_id);
|
||||
injectMediaUrls(cssFiles, mediaFiles);
|
||||
|
||||
jsFiles.forEach(jsFile => {
|
||||
|
|
|
@ -65,3 +65,16 @@ export function deleteFile(req, res) {
|
|||
})
|
||||
});
|
||||
}
|
||||
|
||||
export function getFileContent(req, res) {
|
||||
Project.findById(req.params.project_id, (err, project) => {
|
||||
if (err) {
|
||||
return res.status(404).send({success: false, message: 'Project with that id does not exist.'});
|
||||
}
|
||||
const file = project.files.find(file => file.name === req.params.file_name);
|
||||
if (!file) {
|
||||
return res.status(404).send({success: false, message: 'File with that name does not exist.'});
|
||||
}
|
||||
res.send(file.content);
|
||||
});
|
||||
}
|
||||
|
|
|
@ -5,5 +5,6 @@ const router = new Router();
|
|||
|
||||
router.route('/projects/:project_id/files').post(FileController.createFile);
|
||||
router.route('/projects/:project_id/files/:file_id').delete(FileController.deleteFile);
|
||||
router.route('/projects/:project_id/:file_name').get(FileController.getFileContent);
|
||||
|
||||
export default router;
|
Loading…
Reference in a new issue