UNPKG

@devmehq/open-graph-extractor

Version:

Extract Open Graph and Twitter Card info off from html

101 lines (100 loc) 2.62 kB
"use strict"; /* * validates the url * @param string var - the url we want to scrape */ Object.defineProperty(exports, "__esModule", { value: true }); exports.removeNestedUndefinedValues = exports.isThisANonHTMLUrl = exports.isImageTypeValid = exports.findImageTypeFromUrl = exports.isUrlValid = void 0; function isUrlValid(url) { // todo check image urls return true; return typeof url === 'string' && url.length > 0 && url.indexOf('http') === 0 && url.indexOf(' ') === -1; } exports.isUrlValid = isUrlValid; /* * forces url to start with http:// * @param string var - the url we want to scrape */ /* * validate timeout - how long should we wait for a request * @param number var - the time we want to wait */ /* * findImageTypeFromUrl * @param string url - image url */ function findImageTypeFromUrl(url) { let type = url.split('.').pop(); [type] = type.split('?'); return type; } exports.findImageTypeFromUrl = findImageTypeFromUrl; /* * isImageTypeValid * @param string type - image type */ function isImageTypeValid(type) { const validImageTypes = ['apng', 'bmp', 'gif', 'ico', 'cur', 'jpg', 'jpeg', 'jfif', 'pjpeg', 'pjp', 'png', 'svg', 'tif', 'tiff', 'webp']; return validImageTypes.includes(type); } exports.isImageTypeValid = isImageTypeValid; /* * isThisANonHTMLPage * @param string url - url of site */ function isThisANonHTMLUrl(url) { const invalidImageTypes = [ '.doc', '.docx', '.xls', '.xlsx', '.ppt', '.pptx', '.3gp', '.avi', '.mov', '.mp4', '.m4v', '.m4a', '.mp3', '.mkv', '.ogv', '.ogm', '.ogg', '.oga', '.webm', '.wav', '.bmp', '.gif', '.jpg', '.jpeg', '.png', '.webp', '.zip', '.rar', '.tar', '.tar.gz', '.tgz', '.tar.bz2', '.tbz2', '.txt', '.pdf', ]; const extension = findImageTypeFromUrl(url); return invalidImageTypes.some((type) => `.${extension}`.includes(type)); } exports.isThisANonHTMLUrl = isThisANonHTMLUrl; /* * removeNestedUndefinedValues * @param object - an object */ function removeNestedUndefinedValues(object) { Object.entries(object).forEach(([key, value]) => { if (value && typeof value === 'object') removeNestedUndefinedValues(value); else if (value === undefined) delete object[key]; }); return object; } exports.removeNestedUndefinedValues = removeNestedUndefinedValues;