aboutsummaryrefslogtreecommitdiff
path: root/services/docker/mail-server/aws-sendmail/deliver.ts
diff options
context:
space:
mode:
Diffstat (limited to 'services/docker/mail-server/aws-sendmail/deliver.ts')
-rw-r--r--services/docker/mail-server/aws-sendmail/deliver.ts61
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,
- );
- }
-}