diff --git a/lib/get.js b/lib/get.js index 2e95330..3d17ee7 100644 --- a/lib/get.js +++ b/lib/get.js @@ -5,6 +5,7 @@ var Promise = require('es6-promise').Promise; // jshint ignore:line var fs = require('then-fs'); var mime = require('mime'); var basename = require('path').basename; +var { URL } = require('url'); var cache = {}; @@ -71,7 +72,12 @@ module.exports = function get(url, options) { debug('request %s', url, settings); cache[url] = new Promise(function (resolve) { - request(encodeURI(url), settings, function response(error, res, body) { + var encodedUrl = new URL(url).toString(); + if (encodedUrl !== url) { + inliner.emit('warning', 'url ' + url + ' was transformed to ' + + encodedUrl); + } + request(encodedUrl, settings, function response(error, res, body) { if (error) { debug('request failed: %s', error.message); inliner.emit('warning', 'failed to request ' + base + ' (' + diff --git a/test/fixtures/Encoded Space.gif b/test/fixtures/Encoded Space.gif new file mode 100644 index 0000000..472727f Binary files /dev/null and b/test/fixtures/Encoded Space.gif differ diff --git a/test/fixtures/bad-url.result.html b/test/fixtures/bad-url.result.html index ccbe846..6d3ba24 100644 --- a/test/fixtures/bad-url.result.html +++ b/test/fixtures/bad-url.result.html @@ -1 +1 @@ - + diff --git a/test/fixtures/image-inline-encoded-space.result.html b/test/fixtures/image-inline-encoded-space.result.html new file mode 100644 index 0000000..fa85742 --- /dev/null +++ b/test/fixtures/image-inline-encoded-space.result.html @@ -0,0 +1 @@ + inline image with encoded space in the name diff --git a/test/fixtures/image-inline-encoded-space.src.html b/test/fixtures/image-inline-encoded-space.src.html new file mode 100644 index 0000000..981e4d3 --- /dev/null +++ b/test/fixtures/image-inline-encoded-space.src.html @@ -0,0 +1,10 @@ + + + + + inline image with encoded space in the name + + + + +