Как-то раз, за обсуждением Idris ЯП с коллегой, зашла речь про графики plotly. Очередное подделие вызвало у меня неподдельную усмешку. Ещё бы! Что можно ожидать от ещё одного велосипедного чарта, содержащего в себе d3 и webgl? Правильно, валялся бы этот велосипед в бездне гитхаба, если бы у меня получилось установить chartjs-node. Но что-то мой химерный ubuntu-windows терминал, о котором я как раз недавно сделал обзор на моё блоге, не давал пакету установится, выплёвывая свою ругань на node-gyp. Python'ячьи ошибки не забота фронтмэна! Подакдакав, нашёл nodejs враппер plotly, под платный REST-API сервис https://plot.ly/, у которого по нынешним маркетинговым уловкам, конечно же был OpenSource вариант. Он то мне и подошёл. Прицепив его к своему простенькому боту всё было здорово, пока не вспомнилось что бэкэнд бота лежит на Heroku, а там фишка с fs.createWriteStream() не срабатывает по понятным знатоку SaSS-причинам. Задача вроде плёвая: из результата POST-запроса достать res:
https.request(options, function handleResponse(res) {
if (res.statusCode !== 200) {
callback(null, res);
});
var fileStream = fs.createWriteStream('1.png');
imageStream.pipe(fileStream);
const Writable = stream.Writable;
const ws = Writable();
const buffers = [];
ws._write = (chunk, enc, next) => {
buffers.push(chunk);
next();
};
imageStream.pipe(ws);
imageStream.on('end', () => {
const photoBuffer = Buffer.concat(buffers);
return bot.sendPhoto(chatId, photoBuffer, {
caption: 'Photo'
});
});