Last active
April 15, 2022 09:34
-
-
Save camchenry/0c58cee48bcb0a9d74a412e7e73b4ca9 to your computer and use it in GitHub Desktop.
Generating Social Images with Remix: https://camchenry.com/blog/generating-social-images-with-remix
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
export default async function handleRequest( | |
request: Request, | |
responseStatusCode: number, | |
responseHeaders: Headers, | |
remixContext: EntryContext | |
) { | |
const url = new URL(request.url); | |
if (url.pathname.startsWith("/social-image")) { | |
registerFont("assets/fonts/Inter-Regular.otf", { | |
family: "Inter", | |
weight: "400", | |
}); | |
registerFont("assets/fonts/Inter-Bold.otf", { | |
family: "Inter", | |
weight: "700", | |
}); | |
const socialImage = await generateImage({ | |
title: "Generating Social Images with Remix", | |
author: "Cameron McHenry", | |
font: "Inter", | |
profileImage: "assets/images/camchenry.png", | |
}); | |
return new Response(socialImage, { | |
headers: { | |
"Content-Type": "image/png", | |
"Cache-Control": "public, max-age=2419200", | |
}, | |
}); | |
} | |
const markup = ReactDOMServer.renderToString( | |
<RemixServer context={remixContext} url={request.url} /> | |
); | |
return new Response("<!DOCTYPE html>" + markup, { | |
status: responseStatusCode, | |
headers: { | |
...Object.fromEntries(responseHeaders), | |
"Content-Type": "text/html", | |
}, | |
}); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment