Last active
September 9, 2025 21:58
-
-
Save bridgpal/5c1068b9e560b0449a45a490ab42607b to your computer and use it in GitHub Desktop.
This file contains hidden or 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
| import { HTMLRewriter } from "https://ghuc.cc/worker-tools/html-rewriter/index.ts"; | |
| import { fetchConnectData } from "../../utilities/connect.js"; | |
| export default async (request, context) => { | |
| const url = new URL(request.url); | |
| const response = await context.next(); | |
| const location = context?.geo?.city; | |
| const utm = url.searchParams.get("utm"); | |
| let rewriter; | |
| if (utm === "wanderlust") { | |
| rewriter = new HTMLRewriter() | |
| .on("#netlify-title", { | |
| element: (element) => { | |
| if (location) { | |
| element.setInnerContent(`Discover Your Next Dream Destination in ${location}`); | |
| } else { | |
| element.setInnerContent(`Discover Your Next Dream Destination`); | |
| } | |
| }, | |
| }); | |
| } else if (utm === "adventure") { | |
| rewriter = new HTMLRewriter() | |
| .on("#netlify-title", { | |
| element: (element) => { | |
| if (location) { | |
| element.setInnerContent(`Epic Adventures Await in ${location}`); | |
| } else { | |
| element.setInnerContent(`Epic Adventures Await`); | |
| } | |
| }, | |
| }); | |
| } else if (utm === "local") { | |
| rewriter = new HTMLRewriter() | |
| .on("#netlify-title", { | |
| element: (element) => { | |
| if (location) { | |
| element.setInnerContent(`Experience ${location} Like a Local`); | |
| } else { | |
| element.setInnerContent(`Experience Authentic Local Culture`); | |
| } | |
| }, | |
| }); | |
| } | |
| if (rewriter) { | |
| return rewriter.transform(response); | |
| } else if (url.searchParams.get("method") === "imgreplace") { | |
| const rewriter = new HTMLRewriter() | |
| .on(".netlify-img", { | |
| element: (element) => { | |
| const width = element.getAttribute("width") ?? 800; | |
| const height = element.getAttribute("height") ?? 600; | |
| element.setAttribute( | |
| "src", | |
| `https://placehold.co/${width}x${height}?text=Hello+Netlify` | |
| ); | |
| element.setAttribute("alt", "A random cat"); | |
| } | |
| }) | |
| return rewriter.transform(response); | |
| } else if (url.searchParams.get("method") === "connect") { | |
| const data = await fetchConnectData(); | |
| const rewriter = new HTMLRewriter() | |
| .on('#netlify-title', { | |
| element: (element) => { | |
| if (data) { | |
| element.setInnerContent(`${data.title}?`); | |
| element.setAttribute("data-sb-object-id", data._objectId); | |
| element.setAttribute("data-sb-field-path", ".title"); | |
| } else { | |
| element.setInnerContent(`Hello from Netlify!`); | |
| } | |
| }, | |
| }) | |
| return rewriter.transform(response); | |
| } else if (url.searchParams.get("target")) { | |
| const targetId = `#${url.searchParams.get("target")}`; | |
| const rewriter = new HTMLRewriter() | |
| .on(targetId, { | |
| element: (element) => { | |
| if (location) { | |
| element.setInnerContent(`Hello from Netlify! How's the weather in ${location}?`); | |
| } else { | |
| element.setInnerContent(`Hello from Netlify!`); | |
| } | |
| }, | |
| }) | |
| return rewriter.transform(response); | |
| } | |
| return response; | |
| }; | |
| export const config = { | |
| path: "/", | |
| }; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment