@sugarcube/plugin-facebook
Version:
Fetch data from facebook for sugarcube.
61 lines (46 loc) • 1.66 kB
JavaScript
;
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;