const jsonfile = require('jsonfile'); const https = require('https'); const Sugar = require('sugar-date'); const file = 'data/data.json'; function resultsQuery(callback) { const options = { 'host': 'euromillions.p.mashape.com', 'path': '/ResultsService/FindLast', 'headers': { 'accept': 'text/plain', 'X-Mashape-Key': '5A0H980jK6mshSFL24ZmfiRrNHV2p1d1fhQjsngtx8QWuO9oe4' }, 'method': 'GET' }; https.request(options).on('response', function (response) { let data = ''; response.on('data', function (chunk) { data += chunk; }); response.on('end', function () { // console.log(data); callback(JSON.parse(data)); }); }).end(); } function processDataV2(data) { const newArray = []; const date = /(\/Date\()([0-9]+)([\s\S]+)/.exec(data.Date); // console.log(data); // date = /(\/Date\()([0-9]+)([\s\S]+)/.exec(data.Date); const newdate = Sugar.Date.format(new Date(parseInt(date[2])), '%Y-%m-%d'); newArray.push(newdate); newArray.push(data.Num1); newArray.push(data.Num2); newArray.push(data.Num3); newArray.push(data.Num4); newArray.push(data.Num5); newArray.push(data.Star1); newArray.push(data.Star2); return newArray; } function loadV2(cb) { const lotData = jsonfile.readFileSync(file); cb(lotData); } function load(cb) { jsonfile.readFile(file, (err, obj) => { if (err) console.error(err); const lotData = obj; resultsQuery( (a) => { const latest = processDataV2(a); const dateExists = lotData.filter((item) => { if (item[0] === latest[0]) return item; }); if (dateExists.length === 0) lotData.unshift(latest); // return the data cb(lotData); }); }); } function save(data) { jsonfile.writeFileSync(file, data); } module.exports.load = loadV2; module.exports.save = save;