diff options
Diffstat (limited to 'services/docker/mail-server/aws-sendmail/deliver.ts')
-rw-r--r-- | services/docker/mail-server/aws-sendmail/deliver.ts | 61 |
1 files changed, 0 insertions, 61 deletions
diff --git a/services/docker/mail-server/aws-sendmail/deliver.ts b/services/docker/mail-server/aws-sendmail/deliver.ts deleted file mode 100644 index e0c6e1c..0000000 --- a/services/docker/mail-server/aws-sendmail/deliver.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { Mail } from "./mail.ts"; - -class MailDeliverError extends Error { - constructor( - message: string, - options: ErrorOptions, - public readonly mail: Mail, - ) { - super(message, options); - } -} - -type MailDeliverHook = (mail: Mail) => Promise<void>; - -export abstract class MailDeliverer { - preHooks: MailDeliverHook[] = []; - postHooks: MailDeliverHook[] = []; - - constructor(public readonly destination: string) {} - - protected doPrepare(_mail: Mail): Promise<void> { - return Promise.resolve(); - } - protected abstract doDeliver(mail: Mail): Promise<void>; - protected doFinalize(_mail: Mail): Promise<void> { - return Promise.resolve(); - } - - async deliverRaw(raw: string): Promise<void> { - const mail = new Mail(raw); - await this.deliver(mail); - } - - async deliver(mail: Mail): Promise<void> { - this.doPrepare(mail); - - for (const hook of this.preHooks) { - await hook(mail); - } - - await this.doDeliver(mail); - - for (const hook of this.postHooks) { - await hook(mail); - } - - await this.doFinalize(mail); - } - - protected throwError( - reason: string, - mail: Mail, - cause?: unknown, - ): never { - throw new MailDeliverError( - `Failed to deliver mail to ${this.destination}: ${reason}`, - { cause }, - mail, - ); - } -} |