diff --git a/next.config.mjs b/next.config.mjs index 2d45347..ba5d875 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -56,23 +56,24 @@ const config = { images: { remotePatterns: [ { - protocol: 'https', - hostname: 'img.walters.to', + protocol: "https", + hostname: "img.walters.to", }, { - protocol: 'https', - hostname: 'img.xevion.dev', + protocol: "https", + hostname: "img.xevion.dev", }, { - protocol: 'https', - hostname: 'api.xevion.dev', - } - ] + protocol: "https", + hostname: "api.xevion.dev", + }, + ], }, async redirects() { // Source cannot end with / slash return [ - { source: "/resume", destination: "/resume.pdf", permanent: false }, + { source: "/resume", destination: "/api/resume", permanent: false }, + { source: "/resume.pdf", destination: "/api/resume", permanent: false }, ...v2_redirects, ]; }, diff --git a/src/pages/api/resume.ts b/src/pages/api/resume.ts new file mode 100644 index 0000000..e27bef0 --- /dev/null +++ b/src/pages/api/resume.ts @@ -0,0 +1,28 @@ +import directus from "@/utils/directus"; +import { readSingleton } from "@directus/sdk"; +import type { NextApiRequest, NextApiResponse } from "next"; + +export default async function handler( + req: NextApiRequest, + res: NextApiResponse, +) { + if (req.method !== "GET" || req.method !== "HEAD") + return res.status(405).json({ message: "Method not allowed" }); + + // Get the resume + try { + const metadata = await directus.request(readSingleton("metadata")); + + const resumeUrl = `${directus.url}assets/${metadata.resume}/${ + metadata.resumeFilename ?? "resume.pdf" + }`; + + return res.redirect(301, resumeUrl); + } catch (error) { + console.error({ + message: "Failed to acquire resume URL", + error, + }); + return res.status(500).send({ error: "Failed to acquire resume URL" }); + } +}