diff --git a/index.js b/index.js index daa264d..974b74c 100755 --- a/index.js +++ b/index.js @@ -29,35 +29,44 @@ app.use(express.urlencoded({ })); app.get('/', (req, res) => { - url = req.query.url; - title = req.query.title; - links = req.query.links; + const url = req.query.url; + const title = req.query.title; + const links = req.query.links; let inline_title = false; - if (title) - inline_title = !!JSON.parse(title); - if (links) - links = !JSON.parse(links); + let ignore_links = false; + if (title) { + inline_title = (title === 'true'); + } + if (links) { + ignore_links = (links === 'false'); + } if (url && validURL(url)) { send_headers(res); - read_url(url, res, inline_title, links); + read_url(url, res, inline_title, ignore_links); } else { res.status(400).send("Please specify a valid url query parameter"); } }); app.post('/', function(req, res) { - let html = req.body.html; - let url = req.body.url; + const html = req.body.html; + const url = req.body.url; + const links = req.query.links; + const title = req.query.title; + let ignore_links = false; let inline_title = false; - title = req.query.title; - if (title) - inline_title = !!JSON.parse(title); + if (title) { + inline_title = (title === 'true'); + } + if (links) { + ignore_links = (links === 'false'); + } if (!html) { res.status(400).send("Please provide a POST parameter called html"); } else { try { let document = new JSDOM(html); - let markdown = process_dom(url, document, res, inline_title); + let markdown = process_dom(url, document, res, inline_title, ignore_links); send_headers(res); res.send(markdown); } catch (error) { @@ -76,7 +85,7 @@ function send_headers(res) { res.header("Content-Type", 'text/markdown'); } -function process_dom(url, document, res, inline_title) { +function process_dom(url, document, res, inline_title, ignore_links) { let title = document.window.document.querySelector('title'); if (title) res.header("X-Title", encodeURIComponent(title.textContent)); @@ -88,16 +97,16 @@ function process_dom(url, document, res, inline_title) { for (let i=0;i{ - let markdown = process_dom(url, document, res, inline_title, links); + let markdown = process_dom(url, document, res, inline_title, ignore_links); res.send(markdown); }).catch((error)=> { res.status(400).send("Sorry, could not fetch and convert that URL"); diff --git a/readme.md b/readme.md index 91a4871..8281572 100644 --- a/readme.md +++ b/readme.md @@ -38,13 +38,18 @@ Title is also returned in HTTP header. X-Title: Firefox%20-%20Protect%20your%20life%20online%20with%20privacy-first%20products%20%E2%80%94%20Mozilla%20(UK) ``` -Alternative request, supply url and html: +Optionally suppress links: - POST https://urltomarkdown.herokuapp.com/ + GET https://urltomarkdown.herokuapp.com/?url=https%3A%2F%2Fwww.mozilla.org%2Fen-GB%2Ffirefox%2F&links=false + +Alternative POST request, supply url and html in POST body: + + POST https://urltomarkdown.herokuapp.com/?title=true&links=false - url=https%3A%2F%2Fwww.mozilla.org%2Fen-GB%2Ffirefox%2F + url=https%3A%2F%2Fwww.mozilla.org%2Fen-GB%2Ffirefox%2F - html=%3C!doctype%20html%3E%3Chtml%20... + html=%3C!doctype%20html%3E%3Chtml%20... + Inspired by [Heck Yeah Markdown](http://heckyesmarkdown.com) @@ -76,7 +81,7 @@ javascript:( ### Safari Snippets Using [Safari Snippets](https://apps.apple.com/us/app/safari-snippets/id1126048257) - with the following code solves the issue that some sites prevent javascript bookmarklets accessing a resource on a different domain + to inject the following code solves the issue that some sites prevent javascript bookmarklets accessing a resource on a different domain ``` var request=new XMLHttpRequest(); diff --git a/url_to_markdown_common_filters.js b/url_to_markdown_common_filters.js index 98f5318..e39518b 100755 --- a/url_to_markdown_common_filters.js +++ b/url_to_markdown_common_filters.js @@ -47,7 +47,7 @@ module.exports = { } ], - filter: function (url, data, links=true) { + filter: function (url, data, ignore_links=false) { let domain=''; let base_address=''; if (url) { @@ -82,7 +82,7 @@ module.exports = { ); // remove inline links and refs - if (!links) { + if (ignore_links) { data = data.replaceAll(/\[\[?([^\]]+\]?)\]\([^\)]+\)/g, '$1'); data = data.replaceAll(/[\\\[]+([0-9]+)[\\\]]+/g, '[$1]'); }