const logger = require('winston'); const db = require('../index.js'); const refreshBlockedList = () => { return fetch('https://api.lbry.io/file/list_blocked') .then(response => { return response.json(); }) .then(jsonResponse => { if (!jsonResponse.data) { throw new Error('no data in list_blocked response'); } if (!jsonResponse.data.outpoints) { throw new Error('no outpoints in list_blocked response'); } return jsonResponse.data.outpoints; }) .then(outpoints => { let updatePromises = []; outpoints.forEach(outpoint => { // logger.debug('outpoint:', outpoint); updatePromises.push(db.Claim .findOne({ where: { outpoint, }, }) .then(Claim => { if (Claim) { const { claimId, name } = Claim; const blocked = { claimId, name, outpoint, }; return db.upsert(db.Blocked, blocked, blocked, 'Blocked'); } }) .catch(error => { logger.error(error); })); }); return Promise.all(updatePromises); }) .then(() => { return db.Blocked.findAll({raw: true}); }) .catch(error => { throw error; }); }; module.exports = refreshBlockedList;