From 13f6f9f9e5a5db7eae0197b1bf3f079324c01cf0 Mon Sep 17 00:00:00 2001 From: Mononaut Date: Mon, 14 Aug 2023 17:52:15 +0900 Subject: [PATCH] Select unfurl mode with X-Unfurl-Type header --- unfurler/src/index.ts | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/unfurler/src/index.ts b/unfurler/src/index.ts index f3acd61bf..ae751d1f5 100644 --- a/unfurler/src/index.ts +++ b/unfurler/src/index.ts @@ -250,25 +250,25 @@ class Server { || rawPath.startsWith('/api/v1/translators/images') || rawPath.startsWith('/resources/profile') ) { - if (isSearchCrawler(req.headers['user-agent'])) { + if (isPreviewCrawler(req)) { + res.status(404).send(); + return; + } else { if (this.secureHost) { https.get(config.SERVER.HOST + rawPath, { headers: { 'user-agent': 'mempoolunfurl' }}, (got) => got.pipe(res)); } else { http.get(config.SERVER.HOST + rawPath, { headers: { 'user-agent': 'mempoolunfurl' }}, (got) => got.pipe(res)); } return; - } else { - res.status(404).send(); - return; } } let result = ''; try { - if (isSearchCrawler(req.headers['user-agent'])) { - result = await this.renderSEOPage(rawPath); - } else { + if (isPreviewCrawler(req)) { result = await this.renderUnfurlMeta(rawPath); + } else { + result = await this.renderSEOPage(rawPath); } if (result && result.length) { if (result === '404') { @@ -349,6 +349,6 @@ function capitalize(str) { } } -function isSearchCrawler(useragent: string): boolean { - return /googlebot|applebot|bingbot/i.test(useragent); +function isPreviewCrawler(req: Request): boolean { + return req?.header('X-Unfurl-Type') === 'preview'; }