From b96d1e79a03e438b0f45e29c8939d23af6ad205c Mon Sep 17 00:00:00 2001 From: Bronya-Rand Date: Sat, 27 Apr 2024 21:26:39 +0100 Subject: [PATCH] feat: create proper classes and export for extension use --- public/scripts/scrapers.js | 53 +++++++++++++++++++++++++------------- 1 file changed, 35 insertions(+), 18 deletions(-) diff --git a/public/scripts/scrapers.js b/public/scripts/scrapers.js index 4a7311e88..3208e50cb 100644 --- a/public/scripts/scrapers.js +++ b/public/scripts/scrapers.js @@ -3,25 +3,42 @@ import { renderExtensionTemplateAsync } from './extensions.js'; import { POPUP_RESULT, POPUP_TYPE, callGenericPopup } from './popup.js'; import { isValidUrl } from './utils.js'; -/** - * @typedef {Object} Scraper - * @property {string} id - * @property {string} name - * @property {string} description - * @property {string} iconClass - * @property {boolean} iconAvailable - * @property {() => Promise} isAvailable - * @property {() => Promise} scrape - */ +export class Scraper { + constructor(id, name, description, iconClass, iconAvailable) { + this.id = id; + this.name = name; + this.description = description; + this.iconClass = iconClass; + this.iconAvailable = iconAvailable; + } -/** - * @typedef {Object} ScraperInfo - * @property {string} id - * @property {string} name - * @property {string} description - * @property {string} iconClass - * @property {boolean} iconAvailable - */ + /** + * Check if the scraper is available. + * @returns {Promise} + */ + async isAvailable() { + // Implement in subclass + return false; + } + + /** + * Create a text file from a string. + * @returns {Promise} File attachments scraped from the text + */ + async scrape() { + // Implement in subclass + return []; + } +} + +export class ScraperInfo { + constructor(id, name, description, iconClass) { + this.id = id; + this.name = name; + this.description = description; + this.iconClass = iconClass; + } +} export class ScraperManager { /**