diff --git a/CHANGELOG.md b/CHANGELOG.md index e57519640..b25853464 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ project adheres to [Semantic Versioning](http://semver.org/). (Unreleased) ================== ### Changed +* Use [simple-get](https://github.com/feross/simple-get) for fetching images, now supports redirects (#1398) ### Added ### Fixed diff --git a/lib/image.js b/lib/image.js index 74003ffd1..f51c702c3 100644 --- a/lib/image.js +++ b/lib/image.js @@ -12,8 +12,7 @@ const bindings = require('./bindings') const Image = module.exports = bindings.Image -const http = require("http") -const https = require("https") +const get = require('simple-get') const util = require('util') const {GetSource, SetSource} = bindings; @@ -46,17 +45,15 @@ Object.defineProperty(Image.prototype, 'src', { } } - const type = /^\s*https:\/\//.test(val) ? https : http - type.get(val, res => { - if (res.statusCode !== 200) { + get.concat(val, (err, res, data) => { + if (err) return onerror(err) + + if (res.statusCode < 200 || res.statusCode >= 300) { return onerror(new Error(`Server responded with ${res.statusCode}`)) } - const buffers = [] - res.on('data', buffer => buffers.push(buffer)) - res.on('end', () => { - setSource(this, Buffer.concat(buffers)); - }) - }).on('error', onerror) + + setSource(this, data) + }) } else { // local file path assumed setSource(this, val); } diff --git a/package.json b/package.json index 669d47186..301342e6a 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,8 @@ "types": "types", "dependencies": { "nan": "^2.12.1", - "node-pre-gyp": "^0.11.0" + "node-pre-gyp": "^0.11.0", + "simple-get": "^3.0.3" }, "devDependencies": { "@types/node": "^10.12.18",