From a0dd4d6936853ba88d9ba9557f84f6ffa71af0bc Mon Sep 17 00:00:00 2001 From: Andrew Pietila Date: Thu, 1 Aug 2024 14:44:30 -0500 Subject: [PATCH] Allow fetching the follow accept. --- .../activitypub/follow_accept/[id]/route.ts | 21 +++++++++++++++++++ .../activitypub/user/[user]/inbox/route.ts | 2 -- src/app/api/activitypub/user/[user]/route.ts | 2 -- 3 files changed, 21 insertions(+), 4 deletions(-) create mode 100644 src/app/api/activitypub/follow_accept/[id]/route.ts diff --git a/src/app/api/activitypub/follow_accept/[id]/route.ts b/src/app/api/activitypub/follow_accept/[id]/route.ts new file mode 100644 index 0000000..5938387 --- /dev/null +++ b/src/app/api/activitypub/follow_accept/[id]/route.ts @@ -0,0 +1,21 @@ +import db from "@/db/drizzle"; +import { followAcceptActivity } from "@/db/schema"; +import { eq } from "drizzle-orm"; +import { NextRequest } from "next/server"; + +export async function GET(request: NextRequest, {params}: {params: {id: string}}) { + const idNum = +params.id; + // TODO: HTTP Signatures. + const activity = (await db.select({activity: followAcceptActivity.activity}).from(followAcceptActivity).where(eq(followAcceptActivity.id, idNum)))[0]?.activity; + if ( activity && activity.length > 0 ) { + return new Response(activity, { + headers: { + "Content-Type": "application/activity+json; charset=utf-8" + } + }) + } else { + return new Response("", { + status: 404 + }); + } +} \ No newline at end of file diff --git a/src/app/api/activitypub/user/[user]/inbox/route.ts b/src/app/api/activitypub/user/[user]/inbox/route.ts index c8c8e18..70b76ef 100644 --- a/src/app/api/activitypub/user/[user]/inbox/route.ts +++ b/src/app/api/activitypub/user/[user]/inbox/route.ts @@ -4,8 +4,6 @@ import db from "@/db/drizzle"; import { followAcceptActivity, remoteUser, user } from "@/db/schema"; import { eq } from "drizzle-orm"; -export const dynamic = 'force-dynamic'; - export async function POST(request: NextRequest) { // TODO: HTTP Signature Validation (middleware?) const originBody = await request.json(); diff --git a/src/app/api/activitypub/user/[user]/route.ts b/src/app/api/activitypub/user/[user]/route.ts index f4d0cd0..bab8ab9 100644 --- a/src/app/api/activitypub/user/[user]/route.ts +++ b/src/app/api/activitypub/user/[user]/route.ts @@ -3,8 +3,6 @@ import { user } from "@/db/schema"; import { eq } from "drizzle-orm"; import { NextRequest } from "next/server"; -export const dynamic = 'force-dynamic'; - export async function GET(request: NextRequest, {params}: {params: {user: string}}) { const rows = (await db.select({activity: user.activity}).from(user).where(eq(user.name, params.user))); const activity = rows[0]?.activity;