react-tiny-link
Version:
> Convert your links into beautiful previews
36 lines (30 loc) • 1.36 kB
text/typescript
import { ReactTinyLinkType } from '../../ReactTinyLinkTypes'
import { isEmpty, getAttrOfDocElement, fixRelativeUrls, getBaseUrl } from '../utils'
export default async (url, data, htmlDoc, defaultMedia) => {
const scrappedData = JSON.parse(data)
const htmlElement = document.createElement(`html`)
htmlElement.innerHTML = scrappedData.html
let baseUrl = getBaseUrl(htmlDoc, url)
const image = [
getAttrOfDocElement(htmlDoc, "meta[property='og:image']", 'content'),
getAttrOfDocElement(htmlDoc, "meta[property='og:image:user_generated']", 'content'),
'https://help.twitter.com/content/dam/help-twitter/twitter-logo.png',
]
.filter(i => !isEmpty(i))
.map(i => fixRelativeUrls(baseUrl, i))
const video = [
getAttrOfDocElement(htmlDoc, "meta[property='og:video:url']", 'content'),
getAttrOfDocElement(htmlDoc, "meta[property='og:video:secure_url']", 'content'),
]
.filter(i => !isEmpty(i))
.map(i => fixRelativeUrls(baseUrl, i))
return {
title: htmlElement.querySelector('p').textContent,
description: scrappedData.author_name,
url: getAttrOfDocElement(htmlDoc, "meta[property='og:url']", 'content'),
video: video,
image: !defaultMedia ? image : [...image, defaultMedia].filter(i => !isEmpty(i)),
type: ReactTinyLinkType.TYPE_TWITTER, // MIME Type
publisher: ['Twitter'],
}
}