dotfiles

My PC Dotfiles & Website

site/index.js (1383B)


 1export default {
 2  async fetch(request, env) {
 3    const url = new URL(request.url);
 4    if (url.hostname === "www.maydayv7.dev") {
 5      url.hostname = "maydayv7.dev";
 6      url.protocol = "https:";
 7      return Response.redirect(url, 308);
 8    }
 9    // Curl
10    const userAgent = request.headers.get("User-Agent") || "";
11    if (userAgent.toLowerCase().startsWith("curl")) {
12      if (url.pathname === "/") {
13        url.pathname = "/curl.txt";
14        const response = await env.ASSETS.fetch(new Request(url, request));
15        const headers = new Headers(response.headers);
16        headers.append("Vary", "User-Agent");
17        return new Response(response.body, {
18          status: response.status,
19          headers,
20        });
21      }
22    }
23
24    // Serve Website
25    const response = await env.ASSETS.fetch(request);
26    if (
27      response.ok &&
28      /^\/processed_images\/[^/]+\.[a-f0-9]{16}\.[a-z0-9]+$/.test(url.pathname)
29    ) {
30      const headers = new Headers(response.headers);
31      headers.set("Cache-Control", "public, max-age=31536000, immutable");
32      return new Response(response.body, { status: response.status, headers });
33    }
34    if (url.pathname !== "/") return response;
35    const headers = new Headers(response.headers);
36    headers.append("Vary", "User-Agent");
37    return new Response(response.body, { status: response.status, headers });
38  },
39};