aboutsummaryrefslogtreecommitdiffstats
path: root/packages/trpc/models/assets.ts
diff options
context:
space:
mode:
authorMohamed Bassem <me@mbassem.com>2026-01-11 09:27:35 +0000
committerGitHub <noreply@github.com>2026-01-11 09:27:35 +0000
commit0f9132b5a9186accd991492b73b9ef904342df29 (patch)
tree4050d433cddc5092dc4dcfc2fae29deef4f0028f /packages/trpc/models/assets.ts
parent0e938c14044f66f7ad0ffe3eeda5fa8969a83849 (diff)
downloadkarakeep-0f9132b5a9186accd991492b73b9ef904342df29.tar.zst
feat: privacy-respecting bookmark debugger admin tool (#2373)
* fix: parallelize queue enqueues in bookmark routes * fix: guard meilisearch client init with mutex * feat: add bookmark debugging admin tool * more fixes * more fixes * more fixes
Diffstat (limited to 'packages/trpc/models/assets.ts')
-rw-r--r--packages/trpc/models/assets.ts25
1 files changed, 25 insertions, 0 deletions
diff --git a/packages/trpc/models/assets.ts b/packages/trpc/models/assets.ts
index ad114341..f97cfffb 100644
--- a/packages/trpc/models/assets.ts
+++ b/packages/trpc/models/assets.ts
@@ -4,7 +4,11 @@ import { z } from "zod";
import { assets } from "@karakeep/db/schema";
import { deleteAsset } from "@karakeep/shared/assetdb";
+import serverConfig from "@karakeep/shared/config";
+import { createSignedToken } from "@karakeep/shared/signedTokens";
+import { zAssetSignedTokenSchema } from "@karakeep/shared/types/assets";
import { zAssetTypesSchema } from "@karakeep/shared/types/bookmarks";
+import { getAssetUrl } from "@karakeep/shared/utils/assetUtils";
import { AuthedContext } from "..";
import {
@@ -254,4 +258,25 @@ export class Asset {
});
}
}
+
+ getUrl() {
+ return getAssetUrl(this.asset.id);
+ }
+
+ static getPublicSignedAssetUrl(
+ assetId: string,
+ assetOwnerId: string,
+ expireAt: number,
+ ) {
+ const payload: z.infer<typeof zAssetSignedTokenSchema> = {
+ assetId,
+ userId: assetOwnerId,
+ };
+ const signedToken = createSignedToken(
+ payload,
+ serverConfig.signingSecret(),
+ expireAt,
+ );
+ return `${serverConfig.publicApiUrl}/public/assets/${assetId}?token=${signedToken}`;
+ }
}