From ec87856ef4b7f2d6517663091f17f79ade1239ea Mon Sep 17 00:00:00 2001 From: zadam Date: Sun, 23 Jun 2019 12:16:26 +0200 Subject: [PATCH] save image --- src/routes/api/clipper.js | 51 ++++++++++++++++++++++++++------------- src/routes/routes.js | 2 +- 2 files changed, 35 insertions(+), 18 deletions(-) diff --git a/src/routes/api/clipper.js b/src/routes/api/clipper.js index bfe298716..d59fbcaca 100644 --- a/src/routes/api/clipper.js +++ b/src/routes/api/clipper.js @@ -55,24 +55,41 @@ async function createNote(req) { return {}; } -async function createScreenshot(req) { - console.log(req.body); +async function createImage(req) { + let {dataUrl, title, sourceUrl, pageUrl} = req.body; - const {imageDataUrl, title, url} = req.body; - - const prefix = "data:image/png;base64,"; - - if (imageDataUrl.startsWith(prefix)) { - const buffer = Buffer.from(imageDataUrl.substr(prefix.length), 'base64'); - - const todayNote = await dateNoteService.getDateNote(dateUtils.localNowDate()); - - const {note} = await imageService.saveImage(buffer, title + ".png", todayNote.noteId, true); - - await note.setLabel('sourceUrl', url); + if (!dataUrl) { + dataUrl = sourceUrl; + sourceUrl = null; } - else { - console.log("Unrecognized prefix"); + + if (!dataUrl.startsWith("data:image/")) { + const message = "Unrecognized prefix: " + dataUrl.substr(0, Math.min(dataUrl.length, 100)); + log.info(message); + + return [400, message]; + } + + if (!title && sourceUrl) { + title = path.basename(sourceUrl); + } + + if (!title) { + title = "clipped image"; + } + + const buffer = Buffer.from(dataUrl.split(",")[1], 'base64'); + + const todayNote = await dateNoteService.getDateNote(dateUtils.localNowDate()); + + const {note} = await imageService.saveImage(buffer, title, todayNote.noteId, true); + + if (sourceUrl) { + await note.setLabel('sourceUrl', sourceUrl); + } + + if (pageUrl) { + await note.setLabel('pageUrl', pageUrl); } return {}; @@ -86,6 +103,6 @@ async function ping(req, res) { module.exports = { createNote, - createScreenshot, + createImage, ping }; \ No newline at end of file diff --git a/src/routes/routes.js b/src/routes/routes.js index b46b0eff9..5f20a1268 100644 --- a/src/routes/routes.js +++ b/src/routes/routes.js @@ -225,7 +225,7 @@ function register(app) { apiRoute(POST, '/api/login/protected', loginApiRoute.loginToProtectedSession); route(POST, '/api/clipper/notes', [], clipperRoute.createNote, apiResultHandler); - route(POST, '/api/clipper/screenshot', [], clipperRoute.createScreenshot, apiResultHandler); + route(POST, '/api/clipper/image', [], clipperRoute.createImage, apiResultHandler); route(GET, '/api/clipper/ping', [], clipperRoute.ping); app.use('', router);