From 6feb7ad1d5277a8e63f9e444cbf4b2c0ec1df4b0 Mon Sep 17 00:00:00 2001 From: zadam Date: Sun, 23 Jun 2019 11:25:15 +0200 Subject: [PATCH] selection clipping now supports images --- src/routes/api/clipper.js | 38 ++++++++++++++++++++++++++++++++++---- 1 file changed, 34 insertions(+), 4 deletions(-) diff --git a/src/routes/api/clipper.js b/src/routes/api/clipper.js index e92b9a4e9..bfe298716 100644 --- a/src/routes/api/clipper.js +++ b/src/routes/api/clipper.js @@ -4,15 +4,16 @@ const noteService = require('../../services/notes'); const dateNoteService = require('../../services/date_notes'); const dateUtils = require('../../services/date_utils'); const imageService = require('../../services/image'); +const log = require('../../services/log'); +const path = require('path'); +const Link = require('../../entities/link'); async function createNote(req) { - console.log(req.body); - - const {title, html, url} = req.body; + const {title, html, url, images} = req.body; const todayNote = await dateNoteService.getDateNote(dateUtils.localNowDate()); - await noteService.createNote(todayNote.noteId, title, html, { + const {note} = await noteService.createNote(todayNote.noteId, title, html, { attributes: [ { type: 'label', @@ -22,6 +23,35 @@ async function createNote(req) { ] }); + let rewrittenHtml = html; + + for (const {src, dataUrl, imageId} of images) { + const filename = path.basename(src); + + if (!dataUrl.startsWith("data:image")) { + log.info("Image could not be recognized as data URL:", dataUrl.substr(0, Math.min(100, dataUrl.length))); + continue; + } + + const buffer = Buffer.from(dataUrl.split(",")[1], 'base64'); + + const {note: imageNote, url} = await imageService.saveImage(buffer, filename, note.noteId, true); + + await new Link({ + noteId: note.noteId, + targetNoteId: imageNote.noteId, + type: 'image' + }).save(); + + console.log(`Replacing ${imageId} with ${url}`); + + rewrittenHtml = rewrittenHtml.replace(imageId, url); + } + + console.log("Done", rewrittenHtml); + + await note.setContent(rewrittenHtml); + return {}; }