Created
January 17, 2021 01:27
-
-
Save johanjanssens/b3b35a93bb182c15ae97c4ae900f4c0b to your computer and use it in GitHub Desktop.
CloudFlare worker - Enrich tweet using mircolink.io
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
addEventListener('fetch', event => { | |
event.respondWith(handleRequest(event.request)) | |
}) | |
async function handleRequest(request) | |
{ | |
const url = new URL(request.url); | |
const id = url.pathname; | |
const tweet = await fetchTweet(id); | |
let result = new HTMLRewriter() | |
.on('a:first-of-type', { async element(element) { | |
if(element.hasAttribute('href')) { | |
const link = await fetchLink(element.getAttribute('href')); | |
if(link.status == 'success' && link.data.image) { | |
element.after('<img href="'+link.data.image.url+'" >', { html: true }); | |
} | |
} | |
}}).transform(new Response(tweet.html)) | |
tweet.html = await result.text(); | |
return new Response(JSON.stringify(tweet), { | |
status: 200, | |
headers: { | |
"content-type": "application/json;charset=UTF-8" | |
} | |
}) | |
} | |
async function fetchTweet(id) | |
{ | |
const tweet = await fetch('https://publish.twitter.com/oembed?omit_script=1&url=https://twitter.com/_/status'+id) | |
.then((response) => { | |
return response.json() | |
}); | |
console.log(tweet.html); | |
return tweet; | |
} | |
async function fetchLink(url) | |
{ | |
const link = await fetch('https://api.microlink.io/?url='+url) | |
.then((response) => { | |
return response.json() | |
}); | |
return link; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment