From c2c65cd2c9208b151de0bbc42bc0c061f125c41e Mon Sep 17 00:00:00 2001 From: Michael Gartner Date: Sat, 7 Dec 2024 22:54:57 -0600 Subject: [PATCH 1/4] /releases/:path rewrite --- apps/nextjs/vercel.json | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 apps/nextjs/vercel.json diff --git a/apps/nextjs/vercel.json b/apps/nextjs/vercel.json new file mode 100644 index 000000000..b3e7318ea --- /dev/null +++ b/apps/nextjs/vercel.json @@ -0,0 +1,8 @@ +{ + "rewrites": [ + { + "source": "/releases/:path*", + "destination": "https://6b4k1ntlti17rkf1.public.blob.vercel-storage.com/releases/:path*" + } + ] +} From 0582db25b462fc1ca6f7ce96e77354f96c9eb93b Mon Sep 17 00:00:00 2001 From: Michael Gartner Date: Sat, 7 Dec 2024 23:08:14 -0600 Subject: [PATCH 2/4] CORS --- apps/nextjs/vercel.json | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/apps/nextjs/vercel.json b/apps/nextjs/vercel.json index b3e7318ea..6a79fcdbe 100644 --- a/apps/nextjs/vercel.json +++ b/apps/nextjs/vercel.json @@ -4,5 +4,22 @@ "source": "/releases/:path*", "destination": "https://6b4k1ntlti17rkf1.public.blob.vercel-storage.com/releases/:path*" } + ], + "headers": [ + { + "source": "/releases/(.*)", + "headers": [ + { "key": "Access-Control-Allow-Credentials", "value": "true" }, + { "key": "Access-Control-Allow-Origin", "value": "*" }, + { + "key": "Access-Control-Allow-Methods", + "value": "GET,OPTIONS,PATCH,DELETE,POST,PUT" + }, + { + "key": "Access-Control-Allow-Headers", + "value": "X-CSRF-Token, X-Requested-With, Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version" + } + ] + } ] } From 444260b0c8df4febeddee14238fa673f20bd88cf Mon Sep 17 00:00:00 2001 From: Michael Gartner Date: Sat, 7 Dec 2024 23:37:08 -0600 Subject: [PATCH 3/4] try api instead --- .../app/api/releases/[...slug]/route.ts | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 apps/nextjs/app/api/releases/[...slug]/route.ts diff --git a/apps/nextjs/app/api/releases/[...slug]/route.ts b/apps/nextjs/app/api/releases/[...slug]/route.ts new file mode 100644 index 000000000..a9b34bdfa --- /dev/null +++ b/apps/nextjs/app/api/releases/[...slug]/route.ts @@ -0,0 +1,35 @@ +import { type NextRequest } from "next/server"; + +export async function GET(request: NextRequest) { + const path = request.nextUrl.pathname.replace("/api/releases/", ""); + + try { + const response = await fetch( + `https://6b4k1ntlti17rkf1.public.blob.vercel-storage.com/releases/${path}` + ); + + if (!response.ok) { + return new Response("File not found", { status: 404 }); + } + + // Forward the content-type header + const contentType = response.headers.get("content-type"); + const data = await response.blob(); + + return new Response(data, { + headers: { + "content-type": contentType ?? "application/octet-stream", + "Access-Control-Allow-Origin": "*", + "Access-Control-Allow-Methods": "GET, OPTIONS", + "Access-Control-Allow-Headers": "Content-Type", + "cache-control": + "no-store, no-cache, must-revalidate, proxy-revalidate", + pragma: "no-cache", + expires: "0", + }, + }); + } catch (error) { + console.error("Error fetching file:", error); + return new Response("Internal Server Error", { status: 500 }); + } +} From 09f987ca4fd9beb191f390d7d3bbbd32dff81a38 Mon Sep 17 00:00:00 2001 From: Michael Gartner Date: Sat, 7 Dec 2024 23:57:00 -0600 Subject: [PATCH 4/4] rm CORS and api --- .../app/api/releases/[...slug]/route.ts | 35 ------------------- apps/nextjs/vercel.json | 17 --------- 2 files changed, 52 deletions(-) delete mode 100644 apps/nextjs/app/api/releases/[...slug]/route.ts diff --git a/apps/nextjs/app/api/releases/[...slug]/route.ts b/apps/nextjs/app/api/releases/[...slug]/route.ts deleted file mode 100644 index a9b34bdfa..000000000 --- a/apps/nextjs/app/api/releases/[...slug]/route.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { type NextRequest } from "next/server"; - -export async function GET(request: NextRequest) { - const path = request.nextUrl.pathname.replace("/api/releases/", ""); - - try { - const response = await fetch( - `https://6b4k1ntlti17rkf1.public.blob.vercel-storage.com/releases/${path}` - ); - - if (!response.ok) { - return new Response("File not found", { status: 404 }); - } - - // Forward the content-type header - const contentType = response.headers.get("content-type"); - const data = await response.blob(); - - return new Response(data, { - headers: { - "content-type": contentType ?? "application/octet-stream", - "Access-Control-Allow-Origin": "*", - "Access-Control-Allow-Methods": "GET, OPTIONS", - "Access-Control-Allow-Headers": "Content-Type", - "cache-control": - "no-store, no-cache, must-revalidate, proxy-revalidate", - pragma: "no-cache", - expires: "0", - }, - }); - } catch (error) { - console.error("Error fetching file:", error); - return new Response("Internal Server Error", { status: 500 }); - } -} diff --git a/apps/nextjs/vercel.json b/apps/nextjs/vercel.json index 6a79fcdbe..b3e7318ea 100644 --- a/apps/nextjs/vercel.json +++ b/apps/nextjs/vercel.json @@ -4,22 +4,5 @@ "source": "/releases/:path*", "destination": "https://6b4k1ntlti17rkf1.public.blob.vercel-storage.com/releases/:path*" } - ], - "headers": [ - { - "source": "/releases/(.*)", - "headers": [ - { "key": "Access-Control-Allow-Credentials", "value": "true" }, - { "key": "Access-Control-Allow-Origin", "value": "*" }, - { - "key": "Access-Control-Allow-Methods", - "value": "GET,OPTIONS,PATCH,DELETE,POST,PUT" - }, - { - "key": "Access-Control-Allow-Headers", - "value": "X-CSRF-Token, X-Requested-With, Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version" - } - ] - } ] }