From da32845dd15d41441f8ce0f2f7db19f8ecfe0a1d Mon Sep 17 00:00:00 2001 From: "G.Ambatte" Date: Fri, 22 Jan 2021 16:44:34 +1300 Subject: [PATCH] (WIP) Unwinding refactoring to improve clarity and readability of new functions --- .../pages/userPage/brewItem/brewItem.jsx | 23 +++- server.js | 100 ++++++++++-------- 2 files changed, 71 insertions(+), 52 deletions(-) diff --git a/client/homebrew/pages/userPage/brewItem/brewItem.jsx b/client/homebrew/pages/userPage/brewItem/brewItem.jsx index 4a519cd4d..abf3c392c 100644 --- a/client/homebrew/pages/userPage/brewItem/brewItem.jsx +++ b/client/homebrew/pages/userPage/brewItem/brewItem.jsx @@ -65,7 +65,7 @@ const BrewItem = createClass({ ; }, - renderSourceLink : function(path, icon){ + renderSourceLink : function(){ if(!this.props.brew.shareId) return; let shareLink = this.props.brew.shareId; @@ -73,8 +73,21 @@ const BrewItem = createClass({ shareLink = this.props.brew.googleId + shareLink; } - return - + return + + ; + }, + + renderDownloadLink : function(){ + if(!this.props.brew.shareId) return; + + let shareLink = this.props.brew.shareId; + if(this.props.brew.googleId) { + shareLink = this.props.brew.googleId + shareLink; + } + + return + ; }, @@ -107,9 +120,9 @@ const BrewItem = createClass({
- {this.renderSourceLink('share', 'fa-share-alt')} + {this.renderShareLink()} {this.renderEditLink()} - {this.renderSourceLink('download', 'fa-download')} + {this.renderDownloadLink()} {this.renderDeleteBrewLink()}
; diff --git a/server.js b/server.js index fd55ee296..80f74eea5 100644 --- a/server.js +++ b/server.js @@ -71,14 +71,21 @@ app.get('/robots.txt', (req, res)=>{ return res.sendFile(`${__dirname}/robots.txt`); }); -const shareFunction = function(req, res, type) { + +//Source page +app.get('/source/:id', (req, res)=>{ if(req.params.id.length > 12) { const googleId = req.params.id.slice(0, -12); const shareId = req.params.id.slice(-12); GoogleActions.readFileMetadata(config.get('google_api_key'), googleId, shareId, 'share') - .then((brew)=>{ - setSourceHeaders(res, brew.title, type); - res.send(getSourceText(brew.text, type)); + .then((brew)=>{ + const replaceStrings = { '&': '&', '<': '<', '>': '>' }; + const text = brew.text; + for (const replaceStr in replaceStrings) { + text = text.replaceAll(replaceStr, replaceStrings[replaceStr]); + } + text = `
${text}
`; + res.status(200).send(text); }) .catch((err)=>{ console.log(err); @@ -86,54 +93,53 @@ const shareFunction = function(req, res, type) { }); } else { HomebrewModel.get({ shareId: req.params.id }) - .then((brew)=>{ - setSourceHeaders(res, brew.title, type); - res.send(getSourceText(brew.text, type)); - }) - .catch((err)=>{ - console.log(err); - return res.status(404).send('Could not find Homebrew with that id'); - }); - } -}; - -const setSourceHeaders = function (res, title, type) { - res.status(200); - if(type == 'download') { - const fileName = sanitizeFilename(title).replaceAll(' ', '-'); - - res.set({ - 'Cache-Control' : 'no-cache', - 'Content-Type' : 'text/plain', - 'Content-Disposition' : `attachment; filename="HomeBrewery-${fileName}.txt"` + .then((brew)=>{ + const replaceStrings = { '&': '&', '<': '<', '>': '>' }; + const text = brew.text; + for (const replaceStr in replaceStrings) { + text = text.replaceAll(replaceStr, replaceStrings[replaceStr]); + } + text = `
${text}
`; + res.status(200).send(text); + }) + .catch((err)=>{ + console.log(err); + return res.status(404).send('Could not find Homebrew with that id'); }); } -}; - -const getSourceText = function (brewText, type) { - if(type == 'source') { - const replaceStrings = { '&': '&', '<': '<', '>': '>' }; - const text = brewText; - for (const replaceStr in replaceStrings) { - text = text.replaceAll(replaceStr, replaceStrings[replaceStr]); - } - return `
${text}
`; - } else if(type == 'download') { - return brewText; - } else { - console.log('Unhandled source share type'); - return; - } -}; - -//Source page -app.get('/source/:id', (req, res)=>{ - return shareFunction(req, res, 'source'); }); -//Source download page +//Download brew source page app.get('/download/:id', (req, res)=>{ - return shareFunction(req, res, 'download'); + if(req.params.id.length > 12) { + const googleId = req.params.id.slice(0, -12); + const shareId = req.params.id.slice(-12); + GoogleActions.readFileMetadata(config.get('google_api_key'), googleId, shareId, 'share') + .then((brew)=>{ + const fileName = sanitizeFilename(title).replaceAll(' ', '-'); + if (!fileName || !fileName.length) { fileName = 'Untitled-Brew'; }; + res.set({ + 'Cache-Control' : 'no-cache', + 'Content-Type' : 'text/plain', + 'Content-Disposition' : `attachment; filename="HomeBrewery-${fileName}.txt"` + }); + res.status(200).send(getSourceText(brew.text, type)); + }) + .catch((err)=>{ + console.log(err); + return res.status(400).send('Can\'t get brew from Google'); + }); + } else { + HomebrewModel.get({ shareId: req.params.id }) + .then((brew)=>{ + setSourceHeaders(res, brew.title, type); + res.send(getSourceText(brew.text, type)); + }) + .catch((err)=>{ + console.log(err); + return res.status(404).send('Could not find Homebrew with that id'); + }); + } }); //User Page