UNPKG

markdown-it-link-preview

Version:

Markdown-it plugin to include link preview in your document

35 lines (29 loc) 962 B
const XMLHttpRequest = require('xmlhttprequest').XMLHttpRequest; function getHtmlSync(url, redirectLimit = 5) { // TODO url check if (redirectLimit <= 0) { throw new Error('Too many redirects'); } const xhr = new XMLHttpRequest(); try { xhr.open('GET', url, false); xhr.followRedirects = true; xhr.send(); } catch (err) { throw new Error('XMLHttpRequest(' + url + ') failed. ' + err); } if (xhr.readyState === xhr.DONE && (xhr.status === 301 || xhr.status === 302 || xhr.status === 303 || xhr.status === 307 || xhr.status === 308)) { const redirectUrl = xhr.getResponseHeader('Location'); return getHtmlSync(redirectUrl, redirectLimit - 1); } if (xhr.status != 200) { const statusText = xhr.statusText ? xhr.statusText : ''; throw new Error( 'XMLHttpRequest(' + url + ') status:' + xhr.status + ' ' + statusText, ); } return xhr.responseText; } module.exports = getHtmlSync;