@sugarcube/plugin-facebook
Version:
Fetch data from facebook for sugarcube.
57 lines (41 loc) • 1.26 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 apiPages = (envelope, {
log,
cfg,
stats
}) => {
const appId = (0, _fp.get)("facebook.app_id", cfg);
const appSecret = (0, _fp.get)("facebook.app_secret", cfg);
const queries = _core.envelope.queriesByType(querySource, envelope);
const fetcher = (0, _api.fetchByAppToken)(appId, appSecret);
log.debug(`Found ${(0, _fp.size)(queries)} queries.`);
const queryPage = async q => {
let data = [];
try {
data = await (0, _api.page)(fetcher, q);
} catch (e) {
stats.fail({
type: querySource,
term: q,
reason: e.message
});
}
return data;
};
return (0, _dashp.flowP)([(0, _dashp.flatmapP)(queryPage), rs => _core.envelope.concatData(rs, envelope)], queries);
};
const plugin = _core.plugin.liftManyA2([_assertions.assertAppCredentials, apiPages]);
plugin.desc = "Fetch pages.";
plugin.argv = {};
var _default = plugin;
exports.default = _default;