@devmehq/open-graph-extractor
Version:
Extract Open Graph and Twitter Card info off from html
101 lines (100 loc) • 2.62 kB
JavaScript
;
/*
* 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;