UNPKG

mailbucket

Version:

An npm library that aggregates multiple APIs for creating and receiving temporary emails.

96 lines (95 loc) 4.04 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.MailBucket = void 0; const mailtm_provider_1 = require("./providers/mailtm.provider"); class MailBucket { providers; constructor(config) { this.providers = new Map(); if (config?.providers && config.providers.length > 0) { config.providers.forEach(p => this.registerProvider(p)); } else { this.registerProvider(new mailtm_provider_1.MailTmProvider({ baseUrl: 'https://api.mail.tm', providerName: 'mail.tm' })); this.registerProvider(new mailtm_provider_1.MailTmProvider({ baseUrl: 'https://api.mail.gw', providerName: 'mail.gw' })); } } registerProvider(provider) { if (this.providers.has(provider.providerName)) { } this.providers.set(provider.providerName, provider); } getAvailableProviders() { return Array.from(this.providers.keys()); } getProvider(name) { return this.providers.get(name); } async createAccount(providerName) { let provider; if (providerName) { provider = this.getProvider(providerName); if (!provider) { return { success: false, message: `Provider "${providerName}" not found.` }; } } else { const availableProviders = this.getAvailableProviders(); if (availableProviders.length === 0) { return { success: false, message: 'No email providers registered.' }; } const randomProviderName = availableProviders[Math.floor(Math.random() * availableProviders.length)]; provider = this.getProvider(randomProviderName); if (!provider) { return { success: false, message: `Failed to get random provider instance for "${randomProviderName}".` }; } } try { const result = await provider.createAccount(); if (result.success) { } else { } return result; } catch (error) { console.error(`Unexpected error during account creation with ${provider.providerName}:`, error); return { success: false, message: `Client error during account creation: ${error.message}`, error }; } } async getMessages(account) { const provider = this.getProvider(account.providerName); if (!provider) { return { success: false, message: `Provider "${account.providerName}" associated with this account not found.` }; } return provider.getMessages(account); } async getMessage(account, messageId) { const provider = this.getProvider(account.providerName); if (!provider) { return { success: false, message: `Provider "${account.providerName}" associated with this account not found.` }; } return provider.getMessage(account, messageId); } async deleteMessage(account, messageId) { const provider = this.getProvider(account.providerName); if (!provider) { return { success: false, message: `Provider "${account.providerName}" associated with this account not found.` }; } if (!provider.deleteMessage) { return { success: false, message: `Provider "${account.providerName}" does not support deleting messages.` }; } return provider.deleteMessage(account, messageId); } async deleteAccount(account) { const provider = this.getProvider(account.providerName); if (!provider) { return { success: false, message: `Provider "${account.providerName}" associated with this account not found.` }; } if (!provider.deleteAccount) { return { success: false, message: `Provider "${account.providerName}" does not support deleting accounts.` }; } return provider.deleteAccount(account); } } exports.MailBucket = MailBucket;