From 6bcf05de6e0b47df8613942861f88449bca4d41b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carl-Gerhard=20Lindesva=CC=88rd?= Date: Thu, 21 Mar 2024 11:13:45 +0100 Subject: [PATCH] api: use fallback url if meta data fetcher fails --- apps/api/src/utils/parseUrlMeta.ts | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/apps/api/src/utils/parseUrlMeta.ts b/apps/api/src/utils/parseUrlMeta.ts index e61b5f82..670c3cbc 100644 --- a/apps/api/src/utils/parseUrlMeta.ts +++ b/apps/api/src/utils/parseUrlMeta.ts @@ -1,5 +1,9 @@ import urlMetadata from 'url-metadata'; +function fallbackFavicon(url: string) { + return `https://www.google.com/s2/favicons?domain=${url}&sz=256`; +} + function findBestFavicon(favicons: UrlMetaData['favicons']) { const match = favicons.find( (favicon) => @@ -18,9 +22,7 @@ function transform(data: UrlMetaData, url: string) { const favicon = findBestFavicon(data.favicons); return { - favicon: favicon - ? new URL(favicon, url).toString() - : `https://www.google.com/s2/favicons?domain=${url}&sz=256`, + favicon: favicon ? new URL(favicon, url).toString() : fallbackFavicon(url), }; } @@ -35,8 +37,11 @@ interface UrlMetaData { export async function parseUrlMeta(url: string) { try { const metadata = (await urlMetadata(url)) as UrlMetaData; - return transform(metadata, url); + const data = transform(metadata, url); + return data; } catch (err) { - return null; + return { + favicon: fallbackFavicon(url), + }; } }