node-rigorous
Version:
Rigorous Framework
85 lines (68 loc) • 2.99 kB
JavaScript
;
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
var request = require('request');
var fs = require('fs');
var rigorousConfig = require('../../config');
function isEncodedImage(rawImage) {
return rawImage.indexOf('data:image') > -1;
}
var LocalRessourceService =
/*#__PURE__*/
function () {
function LocalRessourceService() {
_classCallCheck(this, LocalRessourceService);
}
_createClass(LocalRessourceService, null, [{
key: "deleteImageOnDisk",
value: function deleteImageOnDisk(fileLocalPathImage) {
fs.unlinkSync(fileLocalPathImage);
}
}, {
key: "saveRemoteImageOnDisk",
value: function saveRemoteImageOnDisk(rawImage, imageName) {
return new Promise(function (resolve, reject) {
try {
var filePathImage = "".concat(rigorousConfig.TEMPORARY_RESOURCES_PATH).concat(imageName, ".").concat(rigorousConfig.IMAGE_EXTENSION);
var callback = function callback(err) {
if (err) {
console.log(err);
reject(err);
}
/*
TODO detect broken image: exemple - https://d1eh9yux7w8iql.cloudfront.net/fo/img/open_graph_fr-fr.png
fs.readFile(filePathImage, (err2, data) => {
console.log('err2 ', err2)
if (err2) { throw err2; } // Fail if the file can't be read.
});
*/
resolve(filePathImage);
};
if (isEncodedImage(rawImage)) {
var parseRawImage = rawImage.split(','); // data:image/jpeg;base64,/9j/4AAQSk
var encodingParsed = parseRawImage[0].split(';')[1];
var data = parseRawImage[1];
fs.writeFile(filePathImage, data, encodingParsed, function (err) {
callback(err);
});
} else {
// If not we assume it is a url
var imageUrl = rawImage;
request(imageUrl, {
encoding: 'binary'
}, function (error, response, body) {
fs.writeFile(filePathImage, body, 'binary', function (err) {
callback(err);
});
});
}
} catch (err) {
reject(err);
}
});
}
}]);
return LocalRessourceService;
}();
module.exports = LocalRessourceService;