UNPKG

@sugarcube/plugin-guardian

Version:
80 lines (64 loc) 2.06 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _fp = require("lodash/fp"); var _dashp = require("dashp"); var _request = _interopRequireDefault(require("request")); var _pify = _interopRequireDefault(require("pify")); var _moment = _interopRequireDefault(require("moment")); var _core = require("@sugarcube/core"); var _utils = require("./utils"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const getAsync = (0, _pify.default)(_request.default.get); const searchGuardian = (0, _fp.curry)((key, term) => { const opts = { uri: "https://content.guardianapis.com/search", qs: { "api-key": key, q: term }, json: true }; return getAsync(opts).then((0, _fp.property)("body.response.results")); }); const content = (envelope, { log, cfg }) => { const { key } = cfg.guardian; const queries = _core.envelope.queriesByType("guardian_search", envelope); const search = term => (0, _dashp.flowP)([searchGuardian(key), (0, _dashp.tapP)(rs => log.info(`Fetched ${(0, _fp.size)(rs)} pieces of content for ${term}.`))], term); return (0, _dashp.flowP)([(0, _dashp.flatmapP)(search), (0, _dashp.collectP)(r => { const unit = { _sc_source: "guardian_content", _sc_id_fields: ["id"], _sc_content_fields: ["webTitle", "webUrl"], _sc_pubdates: { source: _moment.default.utc(r.webPublicationDate).toDate() }, _sc_relations: [{ type: "url", term: r.webUrl }, { type: "url", term: r.apiUrl }], _sc_media: [{ type: "url", term: r.webUrl }, { type: "json", term: r.apiUrl }] }; return (0, _fp.merge)(r, unit); }), rs => _core.envelope.concatData(rs, envelope)], queries); }; const plugin = _core.plugin.liftManyA2([_utils.assertKey, content]); plugin.desc = "Search for content of The Guardian."; var _default = plugin; exports.default = _default;