From a30487c2d7c903a0e1764462b083e3d6d7ab7cf6 Mon Sep 17 00:00:00 2001 From: Apoorv Mishra Date: Sun, 23 Jul 2023 20:39:16 +0530 Subject: [PATCH] fix: presentUnfurl --- server/presenters/unfurls/unfurl.ts | 14 ++++++++++++++ server/routes/api/urls/urls.ts | 3 ++- shared/types.ts | 6 ++++-- 3 files changed, 20 insertions(+), 3 deletions(-) create mode 100644 server/presenters/unfurls/unfurl.ts diff --git a/server/presenters/unfurls/unfurl.ts b/server/presenters/unfurls/unfurl.ts new file mode 100644 index 000000000..6d8e6d654 --- /dev/null +++ b/server/presenters/unfurls/unfurl.ts @@ -0,0 +1,14 @@ +import { Unfurl } from "@shared/types"; + +function presentUnfurl(data: any): Unfurl { + return { + url: data.url, + type: data.type, + title: data.title, + description: data.description, + thumbnailUrl: data.thumbnail_url, + meta: data.meta, + }; +} + +export default presentUnfurl; diff --git a/server/routes/api/urls/urls.ts b/server/routes/api/urls/urls.ts index 634fb1e5e..37f57d4b4 100644 --- a/server/routes/api/urls/urls.ts +++ b/server/routes/api/urls/urls.ts @@ -8,6 +8,7 @@ import validate from "@server/middlewares/validate"; import { Document, User } from "@server/models"; import { authorize } from "@server/policies"; import { presentDocument, presentMention } from "@server/presenters/unfurls"; +import presentUnfurl from "@server/presenters/unfurls/unfurl"; import { APIContext } from "@server/types"; import { RateLimiterStrategy } from "@server/utils/RateLimiter"; import { Iframely } from "@server/utils/unfurl"; @@ -62,7 +63,7 @@ router.post( } const data = await Iframely.unfurl(url); - ctx.body = data; + ctx.body = presentUnfurl(data); } ); diff --git a/shared/types.ts b/shared/types.ts index f61807898..18b02bf2e 100644 --- a/shared/types.ts +++ b/shared/types.ts @@ -214,13 +214,15 @@ export enum UnfurlType { Document = "document", } -export type Unfurl = { +export type OEmbedType = "photo" | "video" | "rich"; + +export type Unfurl = { url?: string; type: T; title: string; description: string; thumbnailUrl?: string | null; - meta: Record; + meta?: Record; }; // eslint-disable-next-line @typescript-eslint/no-explicit-any