From 8e58b1a7d46d1ed8f65da5c3a8a7d9af605dfd9f Mon Sep 17 00:00:00 2001 From: "P. Reis" Date: Mon, 7 Oct 2024 15:00:46 -0300 Subject: [PATCH] feat: create translatorMiddleware --- src/middleware/translatorMiddleware.ts | 33 ++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 src/middleware/translatorMiddleware.ts diff --git a/src/middleware/translatorMiddleware.ts b/src/middleware/translatorMiddleware.ts new file mode 100644 index 00000000..6e336ad5 --- /dev/null +++ b/src/middleware/translatorMiddleware.ts @@ -0,0 +1,33 @@ +import { AppMiddleware } from '@/app.ts'; +import { Conf } from '@/config.ts'; +import { fetchWorker } from '@/workers/fetch.ts'; +import { DeepLTranslator } from '@/translators/DeepLTranslator.ts'; +import { LibreTranslateTranslator } from '@/translators/LibreTranslateTranslator.ts'; + +/** Set the translator used for translating posts. */ +export const translatorMiddleware: AppMiddleware = async (c, next) => { + const endpoint = Conf.translationProviderEndpoint; + const apiKey = Conf.translationProviderApiKey; + const translationProvider = Conf.translationProvider; + + switch (translationProvider) { + case 'DeepL'.toLowerCase(): + if (apiKey) { + c.set( + 'translator', + new DeepLTranslator({ endpoint, apiKey, fetch: fetchWorker }), + ); + } + break; + case 'Libretranslate'.toLowerCase(): + if (apiKey) { + c.set( + 'translator', + new LibreTranslateTranslator({ endpoint, apiKey, fetch: fetchWorker }), + ); + } + break; + } + + await next(); +};