UNPKG

node-rigorous

Version:
70 lines (51 loc) 2.28 kB
const request = require('request'); const fs = require('fs'); const rigorousConfig = require('../config'); function isEncodedImage(rawImage) { return rawImage.indexOf('data:image') > -1; } class LocalRessourceService { static deleteImageOnDisk(fileLocalPathImage) { fs.unlinkSync(fileLocalPathImage); } static saveRemoteImageOnDisk(rawImage, imageName) { return new Promise((resolve, reject) => { try { const filePathImage = `${rigorousConfig.TEMPORARY_RESOURCES_PATH}${imageName}.${rigorousConfig.IMAGE_EXTENSION}`; const 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)) { const parseRawImage = rawImage.split(','); // data:image/jpeg;base64,/9j/4AAQSk const encodingParsed = parseRawImage[0].split(';')[1]; const data = parseRawImage[1]; fs.writeFile(filePathImage, data, encodingParsed, (err) => { callback(err); }); } else { // If not we assume it is a url const imageUrl = rawImage; request(imageUrl, { encoding: 'binary' }, (error, response, body) => { fs.writeFile(filePathImage, body, 'binary', (err) => { callback(err); }); }); } } catch (err) { reject(err); } }); } } module.exports = LocalRessourceService;