From 6ec4714afa088bbcf41c8950ebd076e8b920dfb1 Mon Sep 17 00:00:00 2001 From: mirarifhasan Date: Tue, 28 May 2024 16:54:33 +0600 Subject: [PATCH] chore: modify mailer module --- packages/hoppscotch-backend/src/errors.ts | 7 -- .../src/mailer/mailer.module.ts | 101 +++++++++--------- 2 files changed, 53 insertions(+), 55 deletions(-) diff --git a/packages/hoppscotch-backend/src/errors.ts b/packages/hoppscotch-backend/src/errors.ts index b540e7f1e..e6d458370 100644 --- a/packages/hoppscotch-backend/src/errors.ts +++ b/packages/hoppscotch-backend/src/errors.ts @@ -691,13 +691,6 @@ export const MAILER_SMTP_USER_UNDEFINED = 'mailer/smtp_user_undefined' as const; export const MAILER_SMTP_PASSWORD_UNDEFINED = 'mailer/smtp_password_undefined' as const; -/** - * MAILER_USE_GRANULAR environment variable is not defined - * (MailerModule) - */ -export const MAILER_USE_CUSTOM_CONFIGS_INVALID_VALUE = - 'mailer/use_custom_configs_invalid_value' as const; - /** * SharedRequest invalid request JSON format * (ShortcodeService) diff --git a/packages/hoppscotch-backend/src/mailer/mailer.module.ts b/packages/hoppscotch-backend/src/mailer/mailer.module.ts index 8ff324e71..a474c6fa7 100644 --- a/packages/hoppscotch-backend/src/mailer/mailer.module.ts +++ b/packages/hoppscotch-backend/src/mailer/mailer.module.ts @@ -4,11 +4,9 @@ import { HandlebarsAdapter } from '@nestjs-modules/mailer/dist/adapters/handleba import { MailerService } from './mailer.service'; import { throwErr } from 'src/utils'; import { - MAILER_FROM_ADDRESS_UNDEFINED, MAILER_SMTP_PASSWORD_UNDEFINED, MAILER_SMTP_URL_UNDEFINED, MAILER_SMTP_USER_UNDEFINED, - MAILER_USE_CUSTOM_CONFIGS_INVALID_VALUE, } from 'src/errors'; import { ConfigService } from '@nestjs/config'; import { loadInfraConfiguration } from 'src/infra-config/helper'; @@ -29,53 +27,11 @@ export class MailerModule { } // If mailer is ENABLED, return the module with configuration (service, listener, etc.) - let transportOption: TransportType; - const mailerAddressFrom = - env.INFRA.MAILER_ADDRESS_FROM ?? - config.get('MAILER_ADDRESS_FROM') ?? - throwErr(MAILER_SMTP_URL_UNDEFINED); - - if ( - (env.INFRA.MAILER_USE_CUSTOM_CONFIGS ?? - config.get('MAILER_USE_CUSTOM_CONFIGS')) === 'false' - ) { - console.log('Using simple mailer configuration'); - - transportOption = - env.INFRA.MAILER_SMTP_URL ?? - config.get('MAILER_SMTP_URL') ?? - throwErr(MAILER_SMTP_URL_UNDEFINED); - } else if ( - (env.INFRA.MAILER_USE_CUSTOM_CONFIGS ?? - config.get('MAILER_USE_CUSTOM_CONFIGS')) === 'true' - ) { - console.log('Using advance mailer configuration'); - - transportOption = { - host: env.INFRA.MAILER_SMTP_HOST ?? config.get('MAILER_SMTP_HOST'), - port: +env.INFRA.MAILER_SMTP_PORT ?? +config.get('MAILER_SMTP_PORT'), - secure: - !!env.INFRA.MAILER_SMTP_SECURE ?? !!config.get('MAILER_SMTP_SECURE'), - auth: { - user: - env.INFRA.MAILER_SMTP_USER ?? - config.get('MAILER_SMTP_USER') ?? - throwErr(MAILER_SMTP_USER_UNDEFINED), - pass: - env.INFRA.MAILER_SMTP_PASSWORD ?? - config.get('MAILER_SMTP_PASSWORD') ?? - throwErr(MAILER_SMTP_PASSWORD_UNDEFINED), - }, - tls: { - rejectUnauthorized: - !!env.INFRA.MAILER_TLS_REJECT_UNAUTHORIZED ?? - !!config.get('MAILER_TLS_REJECT_UNAUTHORIZED'), - }, - }; - } else { - throwErr(MAILER_USE_CUSTOM_CONFIGS_INVALID_VALUE); - } + // Determine transport configuration based on custom config flag + let transportOption = getTransportOption(env, config); + // Get mailer address from environment or config + const mailerAddressFrom = getMailerAddressFrom(env, config); return { module: MailerModule, @@ -95,3 +51,52 @@ export class MailerModule { }; } } + +function isEnabled(value) { + return value === 'true'; +} +function getMailerAddressFrom(env, config): string { + return ( + env.INFRA.MAILER_ADDRESS_FROM ?? + config.get('MAILER_ADDRESS_FROM') ?? + throwErr(MAILER_SMTP_URL_UNDEFINED) + ); +} +function getTransportOption(env, config): TransportType { + const useCustomConfigs = isEnabled( + env.INFRA.MAILER_USE_CUSTOM_CONFIGS ?? + config.get('MAILER_USE_CUSTOM_CONFIGS'), + ); + + if (!useCustomConfigs) { + console.log('Using simple mailer configuration'); + return ( + env.INFRA.MAILER_SMTP_URL ?? + config.get('MAILER_SMTP_URL') ?? + throwErr(MAILER_SMTP_URL_UNDEFINED) + ); + } else { + console.log('Using advanced mailer configuration'); + return { + host: env.INFRA.MAILER_SMTP_HOST ?? config.get('MAILER_SMTP_HOST'), + port: +env.INFRA.MAILER_SMTP_PORT ?? +config.get('MAILER_SMTP_PORT'), + secure: + !!env.INFRA.MAILER_SMTP_SECURE ?? !!config.get('MAILER_SMTP_SECURE'), + auth: { + user: + env.INFRA.MAILER_SMTP_USER ?? + config.get('MAILER_SMTP_USER') ?? + throwErr(MAILER_SMTP_USER_UNDEFINED), + pass: + env.INFRA.MAILER_SMTP_PASSWORD ?? + config.get('MAILER_SMTP_PASSWORD') ?? + throwErr(MAILER_SMTP_PASSWORD_UNDEFINED), + }, + tls: { + rejectUnauthorized: + !!env.INFRA.MAILER_TLS_REJECT_UNAUTHORIZED ?? + !!config.get('MAILER_TLS_REJECT_UNAUTHORIZED'), + }, + }; + } +}