From 09ee685d22f1b6e79075ff60a5ac8f6865e927f6 Mon Sep 17 00:00:00 2001 From: WebStreamr <210764791+webstreamr@users.noreply.github.com> Date: Mon, 12 May 2025 09:05:46 +0000 Subject: [PATCH] refactor: make cache ttl configurable per embed extractor --- src/embed-extractor/Dropload.ts | 2 ++ src/embed-extractor/EmbedExtractors.ts | 4 ++-- src/embed-extractor/SuperVideo.ts | 2 ++ src/embed-extractor/types.ts | 2 ++ 4 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/embed-extractor/Dropload.ts b/src/embed-extractor/Dropload.ts index c824998..09acbe3 100644 --- a/src/embed-extractor/Dropload.ts +++ b/src/embed-extractor/Dropload.ts @@ -8,6 +8,8 @@ export class Dropload implements EmbedExtractor { readonly label = 'Dropload'; + readonly ttl = 900000; // 15m + private readonly fetcher: Fetcher; constructor(fetcher: Fetcher) { diff --git a/src/embed-extractor/EmbedExtractors.ts b/src/embed-extractor/EmbedExtractors.ts index 5966a69..e1ee59d 100644 --- a/src/embed-extractor/EmbedExtractors.ts +++ b/src/embed-extractor/EmbedExtractors.ts @@ -9,7 +9,7 @@ export class EmbedExtractors { constructor(embedExtractors: EmbedExtractor[]) { this.embedExtractors = embedExtractors; - this.urlResultCache = new TTLCache({ max: 1024, ttl: 900000 }); // 15m + this.urlResultCache = new TTLCache({ max: 1024 }); } readonly handle = async (ctx: Context, url: URL, language: string): Promise => { @@ -24,7 +24,7 @@ export class EmbedExtractors { } urlResult = await embedExtractor.extract(ctx, url, language); - this.urlResultCache.set(url.href, urlResult); + this.urlResultCache.set(url.href, urlResult, { ttl: embedExtractor.ttl }); return urlResult; }; diff --git a/src/embed-extractor/SuperVideo.ts b/src/embed-extractor/SuperVideo.ts index 5fb5ee6..15275c2 100644 --- a/src/embed-extractor/SuperVideo.ts +++ b/src/embed-extractor/SuperVideo.ts @@ -8,6 +8,8 @@ export class SuperVideo implements EmbedExtractor { readonly label = 'SuperVideo'; + readonly ttl = 900000; // 15m + private readonly fetcher: Fetcher; constructor(fetcher: Fetcher) { diff --git a/src/embed-extractor/types.ts b/src/embed-extractor/types.ts index 24fd16c..a54df07 100644 --- a/src/embed-extractor/types.ts +++ b/src/embed-extractor/types.ts @@ -5,6 +5,8 @@ export interface EmbedExtractor { readonly label: string; + readonly ttl: number; + readonly supports: (url: URL) => boolean; readonly extract: (ctx: Context, url: URL, language: string) => Promise;