'use strict'; const createEventEmitter = require("create-event-emitter"); const defaultValue = require("default-value"); function ifNotEmpty(value) { if (value !== "") { return value; } } module.exports = function createScraper(options = {}) { let scraperSettings = defaultValue(options.scraperSettings, {}); const pasteStore = require("./paste-store")(); const pastebinComScraper = require("./scrapers/pastebin-com")(scraperSettings.pastebinCom); const errors = require("./errors"); let scraper = createEventEmitter({ pasteStore: pasteStore }); pastebinComScraper.on("paste", (paste) => { let postedDate = parseInt(paste.date); let expiryDate = parseInt(paste.expire); pasteStore.add({ site: "pastebinCom", url: paste.full_url, date: postedDate, id: paste.key, expire: (expiryDate !== 0) ? (expiryDate - postedDate) : undefined, username: ifNotEmpty(paste.user), language: paste.syntax, title: ifNotEmpty(paste.title), contents: paste.raw }); }); pastebinComScraper.on("error", (error) => { if (error instanceof errors.HttpError && error.rateLimited !== true) { scraper.emit("warning", error); } else { scraper.emit("error", error); } }); if (options.scrapePastebinCom) { pastebinComScraper.start(); } pasteStore.on("added", (paste) => { scraper.emit("newPaste", paste); }); return scraper; };