/* * Copyright (c) 2023 Vaughn Nugent * * Library: VNLib * Package: Emails.Transactional.Client.Extensions * File: TransactionalEmailExtensions.cs * * TransactionalEmailExtensions.cs is part of Emails.Transactional.Client.Extensions which * is part of the larger VNLib collection of libraries and utilities. * * Emails.Transactional.Client.Extensions is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * Emails.Transactional.Client.Extensions is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see https://www.gnu.org/licenses/. */ using VNLib.Net.Rest.Client; namespace Emails.Transactional.Client.Extensions { /// /// Contains extension methods for implementing templated /// transactional emails /// public static class TransactionalEmailExtensions { /// /// Sends an on the current configuration resource pool /// /// /// The request to send to the server /// A task the resolves the of the request public static async Task SendEmailAsync(this TransactionalEmailConfig config, EmailTransactionRequest request) { //Get a new client contract from the configuration's pool assuming its a EmailSystemConfig class using ClientContract client = ((TEmailConfig)config).RestClientPool.Lease(); //Send the email and await the result before releasing the client return await client.Resource.SendEmailAsync(request); } } }