UNPKG

@sugarcube/plugin-facebook

Version:
61 lines (46 loc) 1.66 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _fp = require("lodash/fp"); var _dashp = require("dashp"); var _core = require("@sugarcube/core"); var _api = require("../api"); var _assertions = require("../assertions"); const querySource = "facebook_page"; const apiFeed = (envelope, { cfg, log }) => { const appId = (0, _fp.get)("facebook.app_id", cfg); const appSecret = (0, _fp.get)("facebook.app_secret", cfg); const limit = (0, _fp.get)("facebook.feed_limit", cfg); const queries = _core.envelope.queriesByType(querySource, envelope); const fetcher = (0, _api.fetchByAppToken)(appId, appSecret); log.debug(`Found ${(0, _fp.size)(queries)} queries.`); const query = id => { log.info(`Querying the feed of ${id}.`); return (0, _dashp.flowP)([(0, _api.feed)(limit, fetcher), (0, _dashp.tapP)(ms => log.info(`Fetched ${(0, _fp.size)(ms)} messages for ${id}.`)), (0, _dashp.caughtP)(err => { if (err.statusCode === 404) { const msg = (0, _fp.get)("error.error.message", err); log.warn(msg); return []; } throw err; })], id); }; return (0, _dashp.flowP)([(0, _dashp.flatmapP)(query), rs => _core.envelope.concatData(rs, envelope)], queries); }; const plugin = _core.plugin.liftManyA2([_assertions.assertAppCredentials, apiFeed]); plugin.argv = { "facebook.feed_limit": { type: "number", default: 0, nargs: 1, desc: "Limit the number of feed messages. Setting it to 0 removes the limit." } }; plugin.desc = "Fetch the feed of a page."; var _default = plugin; exports.default = _default;