aboutsummaryrefslogtreecommitdiffstats
path: root/apps/web/app/api/v1/bookmarks/singlefile
diff options
context:
space:
mode:
authorMohamed Bassem <me@mbassem.com>2025-05-18 16:58:08 +0100
committerGitHub <noreply@github.com>2025-05-18 16:58:08 +0100
commit3505cb7d6416d101a4fcb1be27fc22e0171bacd2 (patch)
treeef9f55504b8a5b20add8c0ebe916972ab4ab0178 /apps/web/app/api/v1/bookmarks/singlefile
parent74e74fa6425f072107de3a9bc9dd8f91c5ac9a7d (diff)
downloadkarakeep-3505cb7d6416d101a4fcb1be27fc22e0171bacd2.tar.zst
refactor: Migrate from NextJs's API routes to Hono based routes for the API (#1432)
* Setup Hono and migrate the highlights API there * Implement the tags and lists endpoint * Implement the bookmarks and users endpoints * Add the trpc error code adapter * Remove the old nextjs handlers * fix api key not found handling * Fix trpc error handling * Fix 204 handling * Fix search ordering * Implement the singlefile endpoint * Implement the asset serving endpoints * Implement webauth * Add hono as a catch all route under api * fix tests
Diffstat (limited to 'apps/web/app/api/v1/bookmarks/singlefile')
-rw-r--r--apps/web/app/api/v1/bookmarks/singlefile/route.ts54
1 files changed, 0 insertions, 54 deletions
diff --git a/apps/web/app/api/v1/bookmarks/singlefile/route.ts b/apps/web/app/api/v1/bookmarks/singlefile/route.ts
deleted file mode 100644
index 7c1d7201..00000000
--- a/apps/web/app/api/v1/bookmarks/singlefile/route.ts
+++ /dev/null
@@ -1,54 +0,0 @@
-import { createContextFromRequest } from "@/server/api/client";
-import { TRPCError } from "@trpc/server";
-
-import serverConfig from "@karakeep/shared/config";
-import { BookmarkTypes } from "@karakeep/shared/types/bookmarks";
-import { createCallerFactory } from "@karakeep/trpc";
-import { appRouter } from "@karakeep/trpc/routers/_app";
-
-import { uploadFromPostData } from "../../../assets/route";
-
-export const dynamic = "force-dynamic";
-
-export async function POST(req: Request) {
- const ctx = await createContextFromRequest(req);
- if (!ctx.user) {
- return Response.json({ error: "Unauthorized" }, { status: 401 });
- }
- if (serverConfig.demoMode) {
- throw new TRPCError({
- message: "Mutations are not allowed in demo mode",
- code: "FORBIDDEN",
- });
- }
- const formData = await req.formData();
- const up = await uploadFromPostData(ctx.user, ctx.db, formData);
-
- if ("error" in up) {
- return Response.json({ error: up.error }, { status: up.status });
- }
-
- const url = formData.get("url");
- if (!url) {
- throw new TRPCError({
- message: "URL is required",
- code: "BAD_REQUEST",
- });
- }
- if (typeof url !== "string") {
- throw new TRPCError({
- message: "URL must be a string",
- code: "BAD_REQUEST",
- });
- }
-
- const createCaller = createCallerFactory(appRouter);
- const api = createCaller(ctx);
-
- const bookmark = await api.bookmarks.createBookmark({
- type: BookmarkTypes.LINK,
- url,
- precrawledArchiveId: up.assetId,
- });
- return Response.json(bookmark, { status: 201 });
-}