dotfiles

My PC Dotfiles & Website

index.js (1383B)


export default {
  async fetch(request, env) {
    const url = new URL(request.url);
    if (url.hostname === "www.maydayv7.dev") {
      url.hostname = "maydayv7.dev";
      url.protocol = "https:";
      return Response.redirect(url, 308);
    }
    // Curl
    const userAgent = request.headers.get("User-Agent") || "";
    if (userAgent.toLowerCase().startsWith("curl")) {
      if (url.pathname === "/") {
        url.pathname = "/curl.txt";
        const response = await env.ASSETS.fetch(new Request(url, request));
        const headers = new Headers(response.headers);
        headers.append("Vary", "User-Agent");
        return new Response(response.body, {
          status: response.status,
          headers,
        });
      }
    }

    // Serve Website
    const response = await env.ASSETS.fetch(request);
    if (
      response.ok &&
      /^\/processed_images\/[^/]+\.[a-f0-9]{16}\.[a-z0-9]+$/.test(url.pathname)
    ) {
      const headers = new Headers(response.headers);
      headers.set("Cache-Control", "public, max-age=31536000, immutable");
      return new Response(response.body, { status: response.status, headers });
    }
    if (url.pathname !== "/") return response;
    const headers = new Headers(response.headers);
    headers.append("Vary", "User-Agent");
    return new Response(response.body, { status: response.status, headers });
  },
};