UNPKG

social-butterfly

Version:

Incorporate federated social network protocols easily. Used with Hello, world federated blog.

64 lines (50 loc) 1.97 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = updateFeeds; var _feeds = require("./util/feeds"); var _winstonDailyRotateFile = _interopRequireDefault(require("winston-daily-rotate-file")); var _path = _interopRequireDefault(require("path")); var _winston = _interopRequireDefault(require("winston")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const updateFeedsLogger = _winston.default.createLogger({ format: _winston.default.format.combine(_winston.default.format.timestamp(), _winston.default.format.json()), transports: [new _winstonDailyRotateFile.default({ name: 'update-feeds', filename: _path.default.resolve(process.cwd(), 'logs', 'update-feeds-%DATE%.log'), zippedArchive: true })] }); async function updateFeeds(options) { await pruneOlderContent(options); await getFreshContent(options); } async function pruneOlderContent(options) { try { const rowsDeletedCount = await options.removeOldRemoteContent(); updateFeedsLogger.info(`pruned ${rowsDeletedCount} entries.`); } catch (ex) { updateFeedsLogger.error(`pruning db error.\n${ex}`); } } async function getFreshContent(options) { let usersRemote; try { usersRemote = await options.getRemoteAllUsers(); } catch (ex) { updateFeedsLogger.error(`FAILED to get remote users from db.\n${ex}`); return; } for (const userRemote of usersRemote) { let feedResponseText; try { feedResponseText = await (0, _feeds.retrieveFeed)(userRemote.feed_url); updateFeedsLogger.info(`${userRemote.local_username} - ${userRemote.profile_url}: fetched feed.`); } catch (ex) { updateFeedsLogger.error(`${userRemote.local_username} - ${userRemote.profile_url}: fetch FAILED.\n${ex}`); continue; } await (0, _feeds.parseFeedAndInsertIntoDb)(options, userRemote, feedResponseText, updateFeedsLogger); } }