From 76fc49f03761f36b097ef749e2e1ba4cde2ffa0b Mon Sep 17 00:00:00 2001 From: azivner Date: Mon, 26 Nov 2018 23:47:02 +0100 Subject: [PATCH] allow import of single HTML file too --- src/routes/api/import.js | 7 +++-- src/services/import/markdown.js | 30 --------------------- src/services/import/single.js | 47 +++++++++++++++++++++++++++++++++ 3 files changed, 52 insertions(+), 32 deletions(-) delete mode 100644 src/services/import/markdown.js create mode 100644 src/services/import/single.js diff --git a/src/routes/api/import.js b/src/routes/api/import.js index 02c8ebd5c..623b38897 100644 --- a/src/routes/api/import.js +++ b/src/routes/api/import.js @@ -4,7 +4,7 @@ const repository = require('../../services/repository'); const enexImportService = require('../../services/import/enex'); const opmlImportService = require('../../services/import/opml'); const tarImportService = require('../../services/import/tar'); -const markdownImportService = require('../../services/import/markdown'); +const singleImportService = require('../../services/import/single'); const cls = require('../../services/cls'); const path = require('path'); @@ -35,7 +35,10 @@ async function importToBranch(req) { return await opmlImportService.importOpml(file.buffer, parentNote); } else if (extension === '.md') { - return await markdownImportService.importMarkdown(file, parentNote); + return await singleImportService.importMarkdown(file, parentNote); + } + else if (extension === '.html' || extension === '.htm') { + return await singleImportService.importHtml(file, parentNote); } else if (extension === '.enex') { return await enexImportService.importEnex(file, parentNote); diff --git a/src/services/import/markdown.js b/src/services/import/markdown.js deleted file mode 100644 index 8ed911baf..000000000 --- a/src/services/import/markdown.js +++ /dev/null @@ -1,30 +0,0 @@ -"use strict"; - -// note that this is for import of single markdown file only - for archive/structure of markdown files -// see tar export/import - -const noteService = require('../../services/notes'); -const commonmark = require('commonmark'); - -async function importMarkdown(file, parentNote) { - const markdownContent = file.buffer.toString("UTF-8"); - - const reader = new commonmark.Parser(); - const writer = new commonmark.HtmlRenderer(); - - const parsed = reader.parse(markdownContent); - const htmlContent = writer.render(parsed); - - const title = file.originalname.substr(0, file.originalname.length - 3); // strip .md extension - - const {note} = await noteService.createNote(parentNote.noteId, title, htmlContent, { - type: 'text', - mime: 'text/html' - }); - - return note; -} - -module.exports = { - importMarkdown -}; \ No newline at end of file diff --git a/src/services/import/single.js b/src/services/import/single.js new file mode 100644 index 000000000..11eee60ca --- /dev/null +++ b/src/services/import/single.js @@ -0,0 +1,47 @@ +"use strict"; + +const noteService = require('../../services/notes'); +const commonmark = require('commonmark'); +const path = require('path'); + +async function importMarkdown(file, parentNote) { + const markdownContent = file.buffer.toString("UTF-8"); + + const reader = new commonmark.Parser(); + const writer = new commonmark.HtmlRenderer(); + + const parsed = reader.parse(markdownContent); + const htmlContent = writer.render(parsed); + + const title = getFileNameWithoutExtension(file.originalname); + + const {note} = await noteService.createNote(parentNote.noteId, title, htmlContent, { + type: 'text', + mime: 'text/html' + }); + + return note; +} + +async function importHtml(file, parentNote) { + const title = getFileNameWithoutExtension(file.originalname); + const content = file.buffer.toString("UTF-8"); + + const {note} = await noteService.createNote(parentNote.noteId, title, content, { + type: 'text', + mime: 'text/html' + }); + + return note; +} + +function getFileNameWithoutExtension(filePath) { + const extension = path.extname(filePath); + + return filePath.substr(0, filePath.length - extension.length); +} + +module.exports = { + importMarkdown, + importHtml +}; \ No newline at end of file