mirror of
https://github.com/naturalcrit/homebrewery.git
synced 2026-01-02 15:02:38 +00:00
16
server.js
16
server.js
@@ -32,7 +32,7 @@ const getBrewFromId = asyncHandler(async (id, accessType)=>{
|
|||||||
if(accessType == 'raw') {
|
if(accessType == 'raw') {
|
||||||
return brew;
|
return brew;
|
||||||
}
|
}
|
||||||
splitTextAndStyle(brew);
|
splitTextStyleAndMetadata(brew);
|
||||||
return brew;
|
return brew;
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -45,8 +45,14 @@ const sanitizeBrew = (brew, full=false)=>{
|
|||||||
return brew;
|
return brew;
|
||||||
};
|
};
|
||||||
|
|
||||||
const splitTextAndStyle = (brew)=>{
|
const splitTextStyleAndMetadata = (brew)=>{
|
||||||
brew.text = brew.text.replaceAll('\r\n', '\n');
|
brew.text = brew.text.replaceAll('\r\n', '\n');
|
||||||
|
if(brew.text.startsWith('```metadata')) {
|
||||||
|
const index = brew.text.indexOf('```\n\n');
|
||||||
|
const metadata = brew.text.slice(12, index - 1);
|
||||||
|
Object.assign(brew, JSON.parse(metadata));
|
||||||
|
brew.text = brew.text.slice(index + 5);
|
||||||
|
}
|
||||||
if(brew.text.startsWith('```css')) {
|
if(brew.text.startsWith('```css')) {
|
||||||
const index = brew.text.indexOf('```\n\n');
|
const index = brew.text.indexOf('```\n\n');
|
||||||
brew.style = brew.text.slice(7, index - 1);
|
brew.style = brew.text.slice(7, index - 1);
|
||||||
@@ -128,7 +134,7 @@ app.get('/v3_preview', async (req, res, next)=>{
|
|||||||
text : welcomeTextV3,
|
text : welcomeTextV3,
|
||||||
renderer : 'V3'
|
renderer : 'V3'
|
||||||
};
|
};
|
||||||
splitTextAndStyle(brew);
|
splitTextStyleAndMetadata(brew);
|
||||||
req.brew = brew;
|
req.brew = brew;
|
||||||
return next();
|
return next();
|
||||||
});
|
});
|
||||||
@@ -140,7 +146,7 @@ app.get('/changelog', async (req, res, next)=>{
|
|||||||
text : changelogText,
|
text : changelogText,
|
||||||
renderer : 'V3'
|
renderer : 'V3'
|
||||||
};
|
};
|
||||||
splitTextAndStyle(brew);
|
splitTextStyleAndMetadata(brew);
|
||||||
req.brew = brew;
|
req.brew = brew;
|
||||||
return next();
|
return next();
|
||||||
});
|
});
|
||||||
@@ -152,7 +158,7 @@ app.get('/faq', async (req, res, next)=>{
|
|||||||
text : faqText,
|
text : faqText,
|
||||||
renderer : 'V3'
|
renderer : 'V3'
|
||||||
};
|
};
|
||||||
splitTextAndStyle(brew);
|
splitTextStyleAndMetadata(brew);
|
||||||
req.brew = brew;
|
req.brew = brew;
|
||||||
return next();
|
return next();
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -28,13 +28,28 @@ const excludePropsFromUpdate = (brew)=>{
|
|||||||
return brew;
|
return brew;
|
||||||
};
|
};
|
||||||
|
|
||||||
const mergeBrewText = (text, style)=>{
|
const mergeBrewText = (text, style, brew)=>{
|
||||||
if(typeof style !== 'undefined') {
|
if(typeof style !== 'undefined') {
|
||||||
text = `\`\`\`css\n` +
|
text = `\`\`\`css\n` +
|
||||||
`${style}\n` +
|
`${style}\n` +
|
||||||
`\`\`\`\n\n` +
|
`\`\`\`\n\n` +
|
||||||
`${text}`;
|
`${text}`;
|
||||||
}
|
}
|
||||||
|
if(typeof brew !== 'undefined') {
|
||||||
|
const metadata = {
|
||||||
|
title : brew.title,
|
||||||
|
description : brew.description,
|
||||||
|
tags : brew.tags,
|
||||||
|
systems : brew.systems,
|
||||||
|
renderer : brew.renderer,
|
||||||
|
authors : brew.authors,
|
||||||
|
published : brew.published
|
||||||
|
};
|
||||||
|
text = `\`\`\`metadata\n` +
|
||||||
|
`${JSON.stringify(metadata)}\n` +
|
||||||
|
`\`\`\`\n\n` +
|
||||||
|
`${text}`;
|
||||||
|
}
|
||||||
return text;
|
return text;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -143,7 +158,7 @@ const newGoogleBrew = async (req, res, next)=>{
|
|||||||
}
|
}
|
||||||
|
|
||||||
brew.authors = (req.account) ? [req.account.username] : [];
|
brew.authors = (req.account) ? [req.account.username] : [];
|
||||||
brew.text = mergeBrewText(brew.text, brew.style);
|
brew.text = mergeBrewText(brew.text, brew.style, brew);
|
||||||
|
|
||||||
delete brew.editId;
|
delete brew.editId;
|
||||||
delete brew.shareId;
|
delete brew.shareId;
|
||||||
@@ -165,7 +180,7 @@ const updateGoogleBrew = async (req, res, next)=>{
|
|||||||
try { oAuth2Client = GoogleActions.authCheck(req.account, res); } catch (err) { return res.status(err.status).send(err.message); }
|
try { oAuth2Client = GoogleActions.authCheck(req.account, res); } catch (err) { return res.status(err.status).send(err.message); }
|
||||||
|
|
||||||
const brew = excludePropsFromUpdate(req.body);
|
const brew = excludePropsFromUpdate(req.body);
|
||||||
brew.text = mergeBrewText(brew.text, brew.style);
|
brew.text = mergeBrewText(brew.text, brew.style, brew);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const updatedBrew = await GoogleActions.updateGoogleBrew(oAuth2Client, brew);
|
const updatedBrew = await GoogleActions.updateGoogleBrew(oAuth2Client, brew);
|
||||||
|
|||||||
Reference in New Issue
Block a user