chore: modify mailer module

This commit is contained in:
mirarifhasan
2024-05-28 16:54:33 +06:00
parent da2ec5a46d
commit 6ec4714afa
2 changed files with 53 additions and 55 deletions

View File

@@ -691,13 +691,6 @@ export const MAILER_SMTP_USER_UNDEFINED = 'mailer/smtp_user_undefined' as const;
export const MAILER_SMTP_PASSWORD_UNDEFINED = export const MAILER_SMTP_PASSWORD_UNDEFINED =
'mailer/smtp_password_undefined' as const; '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 * SharedRequest invalid request JSON format
* (ShortcodeService) * (ShortcodeService)

View File

@@ -4,11 +4,9 @@ import { HandlebarsAdapter } from '@nestjs-modules/mailer/dist/adapters/handleba
import { MailerService } from './mailer.service'; import { MailerService } from './mailer.service';
import { throwErr } from 'src/utils'; import { throwErr } from 'src/utils';
import { import {
MAILER_FROM_ADDRESS_UNDEFINED,
MAILER_SMTP_PASSWORD_UNDEFINED, MAILER_SMTP_PASSWORD_UNDEFINED,
MAILER_SMTP_URL_UNDEFINED, MAILER_SMTP_URL_UNDEFINED,
MAILER_SMTP_USER_UNDEFINED, MAILER_SMTP_USER_UNDEFINED,
MAILER_USE_CUSTOM_CONFIGS_INVALID_VALUE,
} from 'src/errors'; } from 'src/errors';
import { ConfigService } from '@nestjs/config'; import { ConfigService } from '@nestjs/config';
import { loadInfraConfiguration } from 'src/infra-config/helper'; import { loadInfraConfiguration } from 'src/infra-config/helper';
@@ -29,30 +27,57 @@ export class MailerModule {
} }
// If mailer is ENABLED, return the module with configuration (service, listener, etc.) // If mailer is ENABLED, return the module with configuration (service, listener, etc.)
let transportOption: TransportType;
const mailerAddressFrom = // 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,
providers: [MailerService, MailerEventListener],
imports: [
NestMailerModule.forRoot({
transport: transportOption,
defaults: {
from: mailerAddressFrom,
},
template: {
dir: __dirname + '/templates',
adapter: new HandlebarsAdapter(),
},
}),
],
};
}
}
function isEnabled(value) {
return value === 'true';
}
function getMailerAddressFrom(env, config): string {
return (
env.INFRA.MAILER_ADDRESS_FROM ?? env.INFRA.MAILER_ADDRESS_FROM ??
config.get('MAILER_ADDRESS_FROM') ?? config.get('MAILER_ADDRESS_FROM') ??
throwErr(MAILER_SMTP_URL_UNDEFINED); 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 ( if (!useCustomConfigs) {
(env.INFRA.MAILER_USE_CUSTOM_CONFIGS ??
config.get('MAILER_USE_CUSTOM_CONFIGS')) === 'false'
) {
console.log('Using simple mailer configuration'); console.log('Using simple mailer configuration');
return (
transportOption =
env.INFRA.MAILER_SMTP_URL ?? env.INFRA.MAILER_SMTP_URL ??
config.get('MAILER_SMTP_URL') ?? config.get('MAILER_SMTP_URL') ??
throwErr(MAILER_SMTP_URL_UNDEFINED); throwErr(MAILER_SMTP_URL_UNDEFINED)
} else if ( );
(env.INFRA.MAILER_USE_CUSTOM_CONFIGS ?? } else {
config.get('MAILER_USE_CUSTOM_CONFIGS')) === 'true' console.log('Using advanced mailer configuration');
) { return {
console.log('Using advance mailer configuration');
transportOption = {
host: env.INFRA.MAILER_SMTP_HOST ?? config.get('MAILER_SMTP_HOST'), host: env.INFRA.MAILER_SMTP_HOST ?? config.get('MAILER_SMTP_HOST'),
port: +env.INFRA.MAILER_SMTP_PORT ?? +config.get('MAILER_SMTP_PORT'), port: +env.INFRA.MAILER_SMTP_PORT ?? +config.get('MAILER_SMTP_PORT'),
secure: secure:
@@ -73,25 +98,5 @@ export class MailerModule {
!!config.get('MAILER_TLS_REJECT_UNAUTHORIZED'), !!config.get('MAILER_TLS_REJECT_UNAUTHORIZED'),
}, },
}; };
} else {
throwErr(MAILER_USE_CUSTOM_CONFIGS_INVALID_VALUE);
}
return {
module: MailerModule,
providers: [MailerService, MailerEventListener],
imports: [
NestMailerModule.forRoot({
transport: transportOption,
defaults: {
from: mailerAddressFrom,
},
template: {
dir: __dirname + '/templates',
adapter: new HandlebarsAdapter(),
},
}),
],
};
} }
} }