aboutsummaryrefslogtreecommitdiff
path: root/Emails.Transactional.Client
diff options
context:
space:
mode:
authorLibravatar vnugent <public@vaughnnugent.com>2023-01-12 17:47:40 -0500
committerLibravatar vnugent <public@vaughnnugent.com>2023-01-12 17:47:40 -0500
commitd797953c74798252d7153a20e788ed034c71b0ae (patch)
treebb295b619a4c0ed13d18691063ddaebd3961faf5 /Emails.Transactional.Client
parentd8ef5d21416c4a9deaa5cae7d3c8a11fae6a15f7 (diff)
Large project reorder and consolidation
Diffstat (limited to 'Emails.Transactional.Client')
-rw-r--r--Emails.Transactional.Client/ClientExtensions.cs79
-rw-r--r--Emails.Transactional.Client/EmailTransactionRequest.cs162
-rw-r--r--Emails.Transactional.Client/Emails.Transactional.Client.csproj40
-rw-r--r--Emails.Transactional.Client/Emails.Transactional.Client.xml311
-rw-r--r--Emails.Transactional.Client/Exceptions/InvalidAuthorizationException.cs50
-rw-r--r--Emails.Transactional.Client/Exceptions/InvalidTransactionRequestException.cs52
-rw-r--r--Emails.Transactional.Client/Exceptions/InvalidTransactionResponseException.cs64
-rw-r--r--Emails.Transactional.Client/Exceptions/TransactionExceptionBase.cs59
-rw-r--r--Emails.Transactional.Client/Exceptions/ValidationFailedException.cs86
-rw-r--r--Emails.Transactional.Client/TransactionResult.cs51
-rw-r--r--Emails.Transactional.Client/TransactionalEmailConfig.cs86
-rw-r--r--Emails.Transactional.Client/ValidationErrorMessage.cs45
12 files changed, 0 insertions, 1085 deletions
diff --git a/Emails.Transactional.Client/ClientExtensions.cs b/Emails.Transactional.Client/ClientExtensions.cs
deleted file mode 100644
index e9ad14e..0000000
--- a/Emails.Transactional.Client/ClientExtensions.cs
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
-* Copyright (c) 2022 Vaughn Nugent
-*
-* Library: VNLib
-* Package: Emails.Transactional.Client
-* File: ClientExtensions.cs
-*
-* ClientExtensions.cs is part of Emails.Transactional.Client which is part of the larger
-* VNLib collection of libraries and utilities.
-*
-* Emails.Transactional.Client is free software: you can redistribute it and/or modify
-* it under the terms of the GNU General Public License as published
-* by the Free Software Foundation, either version 2 of the License,
-* or (at your option) any later version.
-*
-* Emails.Transactional.Client 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
-* General Public License for more details.
-*
-* You should have received a copy of the GNU General Public License
-* along with Emails.Transactional.Client. If not, see http://www.gnu.org/licenses/.
-*/
-
-using System;
-
-using System.Net;
-using System.Threading;
-using System.Threading.Tasks;
-
-using Emails.Transactional.Client.Exceptions;
-
-using RestSharp;
-
-namespace Emails.Transactional.Client
-{
- /// <summary>
- /// Contains extension methods to send emails on remote transational email servers
- /// </summary>
- public static class ClientExtensions
- {
- private const Method DEFAULT_SEND_METHOD = Method.Post;
-
- /// <summary>
- /// Asynchronously begins an email transaction against the mail server with the specified
- /// transaction request.
- /// </summary>
- /// <param name="client"></param>
- /// <param name="transaction">The <see cref="EmailTransactionRequest"/> to submit</param>
- /// <param name="token">A cancelaion token to cancel the operation</param>
- /// <returns>A task that represents the async send operation</returns>
- /// <exception cref="ValidationFailedException"></exception>
- /// <exception cref="InvalidAuthorizationException"></exception>
- /// <exception cref="InvalidTransactionRequestException"></exception>
- /// <exception cref="InvalidTransactionResponseException"></exception>
- public static async Task<TransactionResult> SendEmailAsync(this RestClient client, EmailTransactionRequest transaction, CancellationToken token = default)
- {
- //Init the new request
- RestRequest request = new(transaction.Endpoint, DEFAULT_SEND_METHOD)
- {
- //Json request
- RequestFormat = DataFormat.Json
- };
- //add/serialze the transacion request
- request.AddJsonBody(transaction);
- //Exec the tranasction on the client
- RestResponse<TransactionResult> response = await client.ExecuteAsync<TransactionResult>(request, token);
- //parse the response body
- return response.StatusCode switch
- {
- HttpStatusCode.Unauthorized or HttpStatusCode.Forbidden => throw new InvalidAuthorizationException("The server did not accept the current authorization", response),
- HttpStatusCode.BadRequest => throw new InvalidTransactionRequestException(response),
- HttpStatusCode.UnprocessableEntity => throw new ValidationFailedException(response.Data),
- HttpStatusCode.OK => response.Data,
- _ => throw new InvalidTransactionResponseException("Unhandled status code", response),
- };
- }
- }
-}
diff --git a/Emails.Transactional.Client/EmailTransactionRequest.cs b/Emails.Transactional.Client/EmailTransactionRequest.cs
deleted file mode 100644
index d6b1ebe..0000000
--- a/Emails.Transactional.Client/EmailTransactionRequest.cs
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
-* Copyright (c) 2022 Vaughn Nugent
-*
-* Library: VNLib
-* Package: Emails.Transactional.Client
-* File: EmailTransactionRequest.cs
-*
-* EmailTransactionRequest.cs is part of Emails.Transactional.Client which is part of the larger
-* VNLib collection of libraries and utilities.
-*
-* Emails.Transactional.Client is free software: you can redistribute it and/or modify
-* it under the terms of the GNU General Public License as published
-* by the Free Software Foundation, either version 2 of the License,
-* or (at your option) any later version.
-*
-* Emails.Transactional.Client 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
-* General Public License for more details.
-*
-* You should have received a copy of the GNU General Public License
-* along with Emails.Transactional.Client. If not, see http://www.gnu.org/licenses/.
-*/
-
-using System;
-using System.Collections.Generic;
-using System.Text.Json.Serialization;
-
-namespace Emails.Transactional.Client
-{
- /// <summary>
- /// A transactional email request to send an email
- /// template.
- /// </summary>
- public class EmailTransactionRequest
- {
- /// <summary>
- /// The transactional send endpoint address
- /// </summary>
- [JsonIgnore]
- public Uri Endpoint { get; init; }
- /// <summary>
- /// A dictionary of email addresses/names of
- /// users to send this email to
- /// </summary>
- [JsonPropertyName("to")]
- public Dictionary<string, string> ToAddresses { get; set; }
- /// <summary>
- /// A dictionary of email addresses/names of
- /// users to carbon copy this email to
- /// </summary>
- [JsonPropertyName("cc")]
- public Dictionary<string, string> CcAddresses { get; set; }
- /// <summary>
- /// A dictionary of email addresses/names of
- /// users to blind carbon copy this email to
- /// </summary>
- [JsonPropertyName("bcc")]
- public Dictionary<string, string> BccAddresses { get; set; }
- /// <summary>
- /// A dictionary of variables to substitute into the liquid
- /// email template
- /// </summary>
- [JsonPropertyName("variables")]
- public Dictionary<string, string> Variables { get; set; }
-
- /// <summary>
- /// The subject of the email to send
- /// </summary>
- [JsonPropertyName("subject")]
- public string Subject { get; set; }
-
- /// <summary>
- /// The unique id of the email template to send
- /// </summary>
- [JsonPropertyName("template_id")]
- public string TemplateId { get; set; }
- /// <summary>
- /// The system from email name. NOTE: This is a protected value
- /// </summary>
- [JsonPropertyName("from_name")]
- public string FromName { get; set; }
- /// <summary>
- /// The system from email address. NOTE: This is a protected value
- /// </summary>
- [JsonPropertyName("from_address")]
- public string FromAddress { get; set; }
-
- /// <summary>
- /// Creates a new email transaction with the specified email template to send
- /// </summary>
- /// <param name="templateId">The id of the template to send</param>
- /// <exception cref="ArgumentNullException"></exception>
- public EmailTransactionRequest(string templateId)
- {
- this.TemplateId = templateId ?? throw new ArgumentNullException(nameof(templateId));
- }
- /// <summary>
- /// Creates a new email transaction with the specified email template
- /// and a single recipient
- /// </summary>
- /// <param name="templateId">The id of the template to send</param>
- /// <param name="toAddress">A singular recipient name</param>
- /// <param name="toName">A singlular recipient email address</param>
- /// <exception cref="ArgumentNullException"></exception>
- public EmailTransactionRequest(string templateId, string toName, string toAddress)
- {
- this.TemplateId = templateId ?? throw new ArgumentNullException(nameof(templateId));
- AddToAddress(toName, toAddress);
- }
- /// <summary>
- /// Adds a recipient to the To email address dictionary
- /// </summary>
- /// <param name="toName">The name of the user to send the email to</param>
- /// <param name="toAddress">The unique email address of the user to add to the recipient collection</param>
- public void AddToAddress(string toName, string toAddress)
- {
- ToAddresses ??= new(1);
- ToAddresses.Add(toAddress, toName);
- }
- /// <summary>
- /// Adds a recipient to the To email address dictionary
- /// </summary>
- /// <param name="toAddress">The unique email address of the user to add to the recipient collection</param>
- public void AddToAddress(string toAddress)
- {
- string name = toAddress.Split('@')[0];
- AddToAddress(name, toAddress);
- }
- /// <summary>
- /// Adds a carbon copy recipient to the current cc dictionary
- /// </summary>
- /// <param name="ccName">The name of the recipient</param>
- /// <param name="ccAddress">The unique email address of the bcc recipient</param>
- public void AddCcAddress(string ccName, string ccAddress)
- {
- CcAddresses ??= new(1);
- CcAddresses.Add(ccAddress, ccName);
- }
- /// <summary>
- /// Adds a blind carbon copy recipient to the current bcc dictionary
- /// </summary>
- /// <param name="bccName">The name of the recipient</param>
- /// <param name="bccAddress">The unique email address of the bcc recipient</param>
- public void AddBccAddress(string bccName, string bccAddress)
- {
- BccAddresses ??= new(1);
- BccAddresses.Add(bccAddress, bccName);
- }
- /// <summary>
- /// Adds a liquid template variable to be subsituted by the template
- /// renderer.
- /// </summary>
- /// <param name="varName">The unique name of the variable to add to the collection</param>
- /// <param name="varValue">The value if the variable that will be substituted into the template</param>
- public void AddVariable(string varName, string varValue)
- {
- Variables ??= new(1);
- Variables.Add(varName, varValue);
- }
- }
-}
diff --git a/Emails.Transactional.Client/Emails.Transactional.Client.csproj b/Emails.Transactional.Client/Emails.Transactional.Client.csproj
deleted file mode 100644
index 97a794f..0000000
--- a/Emails.Transactional.Client/Emails.Transactional.Client.csproj
+++ /dev/null
@@ -1,40 +0,0 @@
-<Project Sdk="Microsoft.NET.Sdk">
-
- <PropertyGroup>
- <TargetFramework>net6.0</TargetFramework>
- <Authors>Vaughn Nugent</Authors>
- <Version>1.0.0.1</Version>
- <Description>A client library for using the Emails.Transactional server plugin</Description>
- <PackageProjectUrl>www.vaughnnugent.com/resources</PackageProjectUrl>
- <Copyright>Copyright © 2022 Vaughn Nugent</Copyright>
-
- </PropertyGroup>
-
- <PropertyGroup>
- <DocumentationFile></DocumentationFile>
- <CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
- <Nullable>enable</Nullable>
- <GenerateDocumentationFile>True</GenerateDocumentationFile>
- </PropertyGroup>
-
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
- <Deterministic>False</Deterministic>
- </PropertyGroup>
-
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
- <Deterministic>False</Deterministic>
- </PropertyGroup>
-
- <ItemGroup>
- <PackageReference Include="ErrorProne.NET.CoreAnalyzers" Version="0.1.2">
- <PrivateAssets>all</PrivateAssets>
- <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
- </PackageReference>
- <PackageReference Include="ErrorProne.NET.Structs" Version="0.1.2">
- <PrivateAssets>all</PrivateAssets>
- <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
- </PackageReference>
- <PackageReference Include="RestSharp" Version="108.0.2" />
- </ItemGroup>
-
-</Project>
diff --git a/Emails.Transactional.Client/Emails.Transactional.Client.xml b/Emails.Transactional.Client/Emails.Transactional.Client.xml
deleted file mode 100644
index a69734e..0000000
--- a/Emails.Transactional.Client/Emails.Transactional.Client.xml
+++ /dev/null
@@ -1,311 +0,0 @@
-<?xml version="1.0"?>
-<!--
-Copyright (c) 2022 Vaughn Nugent
--->
-<doc>
- <assembly>
- <name>Emails.Transactional.Client</name>
- </assembly>
- <members>
- <member name="T:Emails.Transactional.Client.ClientExtensions">
- <summary>
- Contains extension methods to send emails on remote transational email servers
- </summary>
- </member>
- <member name="M:Emails.Transactional.Client.ClientExtensions.SendEmailAsync(RestSharp.RestClient,Emails.Transactional.Client.EmailTransactionRequest,System.Threading.CancellationToken)">
- <summary>
- Asynchronously begins an email transaction against the mail server with the specified
- transaction request.
- </summary>
- <param name="client"></param>
- <param name="transaction">The <see cref="T:Emails.Transactional.Client.EmailTransactionRequest"/> to submit</param>
- <param name="token">A cancelaion token to cancel the operation</param>
- <returns>A task that represents the async send operation</returns>
- <exception cref="T:Emails.Transactional.Client.Exceptions.ValidationFailedException"></exception>
- <exception cref="T:Emails.Transactional.Client.Exceptions.InvalidAuthorizationException"></exception>
- <exception cref="T:Emails.Transactional.Client.Exceptions.InvalidTransactionRequestException"></exception>
- <exception cref="T:Emails.Transactional.Client.Exceptions.InvalidTransactionResponseException"></exception>
- </member>
- <member name="T:Emails.Transactional.Client.EmailTransactionRequest">
- <summary>
- A transactional email request to send an email
- template.
- </summary>
- </member>
- <member name="P:Emails.Transactional.Client.EmailTransactionRequest.Endpoint">
- <summary>
- The transactional send endpoint address
- </summary>
- </member>
- <member name="P:Emails.Transactional.Client.EmailTransactionRequest.ToAddresses">
- <summary>
- A dictionary of email addresses/names of
- users to send this email to
- </summary>
- </member>
- <member name="P:Emails.Transactional.Client.EmailTransactionRequest.CcAddresses">
- <summary>
- A dictionary of email addresses/names of
- users to carbon copy this email to
- </summary>
- </member>
- <member name="P:Emails.Transactional.Client.EmailTransactionRequest.BccAddresses">
- <summary>
- A dictionary of email addresses/names of
- users to blind carbon copy this email to
- </summary>
- </member>
- <member name="P:Emails.Transactional.Client.EmailTransactionRequest.Variables">
- <summary>
- A dictionary of variables to substitute into the liquid
- email template
- </summary>
- </member>
- <member name="P:Emails.Transactional.Client.EmailTransactionRequest.Subject">
- <summary>
- The subject of the email to send
- </summary>
- </member>
- <member name="P:Emails.Transactional.Client.EmailTransactionRequest.TemplateId">
- <summary>
- The unique id of the email template to send
- </summary>
- </member>
- <member name="P:Emails.Transactional.Client.EmailTransactionRequest.FromName">
- <summary>
- The system from email name. NOTE: This is a protected value
- </summary>
- </member>
- <member name="P:Emails.Transactional.Client.EmailTransactionRequest.FromAddress">
- <summary>
- The system from email address. NOTE: This is a protected value
- </summary>
- </member>
- <member name="M:Emails.Transactional.Client.EmailTransactionRequest.#ctor(System.String)">
- <summary>
- Creates a new email transaction with the specified email template to send
- </summary>
- <param name="templateId">The id of the template to send</param>
- <exception cref="T:System.ArgumentNullException"></exception>
- </member>
- <member name="M:Emails.Transactional.Client.EmailTransactionRequest.#ctor(System.String,System.String,System.String)">
- <summary>
- Creates a new email transaction with the specified email template
- and a single recipient
- </summary>
- <param name="templateId">The id of the template to send</param>
- <param name="toAddress">A singular recipient name</param>
- <param name="toName">A singlular recipient email address</param>
- <exception cref="T:System.ArgumentNullException"></exception>
- </member>
- <member name="M:Emails.Transactional.Client.EmailTransactionRequest.AddToAddress(System.String,System.String)">
- <summary>
- Adds a recipient to the To email address dictionary
- </summary>
- <param name="toName">The name of the user to send the email to</param>
- <param name="toAddress">The unique email address of the user to add to the recipient collection</param>
- </member>
- <member name="M:Emails.Transactional.Client.EmailTransactionRequest.AddToAddress(System.String)">
- <summary>
- Adds a recipient to the To email address dictionary
- </summary>
- <param name="toAddress">The unique email address of the user to add to the recipient collection</param>
- </member>
- <member name="M:Emails.Transactional.Client.EmailTransactionRequest.AddCcAddress(System.String,System.String)">
- <summary>
- Adds a carbon copy recipient to the current cc dictionary
- </summary>
- <param name="ccName">The name of the recipient</param>
- <param name="ccAddress">The unique email address of the bcc recipient</param>
- </member>
- <member name="M:Emails.Transactional.Client.EmailTransactionRequest.AddBccAddress(System.String,System.String)">
- <summary>
- Adds a blind carbon copy recipient to the current bcc dictionary
- </summary>
- <param name="bccName">The name of the recipient</param>
- <param name="bccAddress">The unique email address of the bcc recipient</param>
- </member>
- <member name="M:Emails.Transactional.Client.EmailTransactionRequest.AddVariable(System.String,System.String)">
- <summary>
- Adds a liquid template variable to be subsituted by the template
- renderer.
- </summary>
- <param name="varName">The unique name of the variable to add to the collection</param>
- <param name="varValue">The value if the variable that will be substituted into the template</param>
- </member>
- <member name="T:Emails.Transactional.Client.Exceptions.InvalidAuthorizationException">
- <summary>
- A excption raised when an Authorization error occured
- during a request
- </summary>
- </member>
- <member name="M:Emails.Transactional.Client.Exceptions.InvalidAuthorizationException.#ctor">
- <inheritdoc/>
- </member>
- <member name="M:Emails.Transactional.Client.Exceptions.InvalidAuthorizationException.#ctor(System.String)">
- <inheritdoc/>
- </member>
- <member name="M:Emails.Transactional.Client.Exceptions.InvalidAuthorizationException.#ctor(System.String,System.Exception)">
- <inheritdoc/>
- </member>
- <member name="M:Emails.Transactional.Client.Exceptions.InvalidAuthorizationException.#ctor(System.String,RestSharp.RestResponse{Emails.Transactional.Client.TransactionResult})">
- <inheritdoc/>
- </member>
- <member name="M:Emails.Transactional.Client.Exceptions.InvalidTransactionRequestException.#ctor">
- <inheritdoc/>
- </member>
- <member name="M:Emails.Transactional.Client.Exceptions.InvalidTransactionRequestException.#ctor(System.String)">
- <inheritdoc/>
- </member>
- <member name="M:Emails.Transactional.Client.Exceptions.InvalidTransactionRequestException.#ctor(System.String,System.Exception)">
- <inheritdoc/>
- </member>
- <member name="M:Emails.Transactional.Client.Exceptions.InvalidTransactionRequestException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
- <inheritdoc/>
- </member>
- <member name="T:Emails.Transactional.Client.Exceptions.InvalidTransactionResponseException">
- <summary>
- Raised when the results of an email transaction
- failed. Inner exceptions may be set
- </summary>
- </member>
- <member name="P:Emails.Transactional.Client.Exceptions.InvalidTransactionResponseException.ErrorMessage">
- <summary>
- An error message received from the client
- </summary>
- </member>
- <member name="M:Emails.Transactional.Client.Exceptions.InvalidTransactionResponseException.#ctor">
- <inheritdoc/>
- </member>
- <member name="M:Emails.Transactional.Client.Exceptions.InvalidTransactionResponseException.#ctor(System.String)">
- <inheritdoc/>
- </member>
- <member name="M:Emails.Transactional.Client.Exceptions.InvalidTransactionResponseException.#ctor(System.String,System.Exception)">
- <inheritdoc/>
- </member>
- <member name="M:Emails.Transactional.Client.Exceptions.InvalidTransactionResponseException.#ctor(System.String,RestSharp.RestResponse{Emails.Transactional.Client.TransactionResult})">
- <summary>
- Initializes a new <see cref="T:Emails.Transactional.Client.Exceptions.InvalidTransactionResponseException"/> with
- the response that contains the error
- </summary>
- <param name="message">The base exception message</param>
- <param name="response">The response that caused the error</param>
- </member>
- <member name="T:Emails.Transactional.Client.Exceptions.TransactionExceptionBase">
- <summary>
- A base exception for all client transaction excepions
- </summary>
- </member>
- <member name="M:Emails.Transactional.Client.Exceptions.TransactionExceptionBase.#ctor">
- <inheritdoc/>
- </member>
- <member name="M:Emails.Transactional.Client.Exceptions.TransactionExceptionBase.#ctor(System.String)">
- <inheritdoc/>
- </member>
- <member name="M:Emails.Transactional.Client.Exceptions.TransactionExceptionBase.#ctor(System.String,System.Exception)">
- <inheritdoc/>
- </member>
- <member name="M:Emails.Transactional.Client.Exceptions.TransactionExceptionBase.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
- <inheritdoc/>
- </member>
- <member name="P:Emails.Transactional.Client.Exceptions.TransactionExceptionBase.ErrorResponse">
- <summary>
- The response objec that caused the exception
- </summary>
- </member>
- <member name="P:Emails.Transactional.Client.Exceptions.TransactionExceptionBase.ResultMessage">
- <summary>
- The string represenation of the response body
- </summary>
- </member>
- <member name="T:Emails.Transactional.Client.Exceptions.ValidationFailedException">
- <summary>
- Raised when server message validation failed
- </summary>
- </member>
- <member name="M:Emails.Transactional.Client.Exceptions.ValidationFailedException.#ctor">
- <inheritdoc/>
- </member>
- <member name="M:Emails.Transactional.Client.Exceptions.ValidationFailedException.#ctor(System.String)">
- <inheritdoc/>
- </member>
- <member name="M:Emails.Transactional.Client.Exceptions.ValidationFailedException.#ctor(System.String,System.Exception)">
- <inheritdoc/>
- </member>
- <member name="M:Emails.Transactional.Client.Exceptions.ValidationFailedException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
- <inheritdoc/>
- </member>
- <member name="P:Emails.Transactional.Client.Exceptions.ValidationFailedException.ValidationErrors">
- <summary>
- A collection of validaion error messages
- </summary>
- </member>
- <member name="M:Emails.Transactional.Client.Exceptions.ValidationFailedException.#ctor(Emails.Transactional.Client.TransactionResult)">
- <summary>
-
- </summary>
- <param name="result"></param>
- </member>
- <member name="T:Emails.Transactional.Client.TransactionalEmailConfig">
- <summary>
- A global configuration object for transactional email clients
- </summary>
- </member>
- <member name="P:Emails.Transactional.Client.TransactionalEmailConfig.ServiceLocation">
- <summary>
- The server transaction endpoint location
- </summary>
- </member>
- <member name="P:Emails.Transactional.Client.TransactionalEmailConfig.TemplateIdLookup">
- <summary>
- An email id template/translation table for email template-ids
- </summary>
- </member>
- <member name="M:Emails.Transactional.Client.TransactionalEmailConfig.WithUrl(System.Uri)">
- <summary>
- Adds the mail service location to the current instance
- </summary>
- <param name="serviceLocation">The address of the remote server transaction endpoint</param>
- <returns>A referrence to the current object (fluent api)</returns>
- <exception cref="T:System.ArgumentNullException"></exception>
- </member>
- <member name="M:Emails.Transactional.Client.TransactionalEmailConfig.WithTemplates(System.Collections.Generic.IReadOnlyDictionary{System.String,System.String})">
- <summary>
- Sets the template lookup table for the current instance
- </summary>
- <param name="templates">The template-id lookup table to referrence</param>
- <returns>A referrence to the current object (fluent api)</returns>
- <exception cref="T:System.ArgumentNullException"></exception>
- </member>
- <member name="M:Emails.Transactional.Client.TransactionalEmailConfig.GetTemplateRequest(System.String)">
- <summary>
- Gets a new <see cref="T:Emails.Transactional.Client.EmailTransactionRequest"/> from the specifed
- template name.
- </summary>
- <param name="templateName"></param>
- <returns></returns>
- <exception cref="T:System.Collections.Generic.KeyNotFoundException"></exception>
- <exception cref="T:System.ArgumentNullException"></exception>
- </member>
- <member name="T:Emails.Transactional.Client.TransactionResult">
- <summary>
- A JSON serializable object that contains the results of the transaction
- </summary>
- </member>
- <member name="T:Emails.Transactional.Client.ValidationErrorMessage">
- <summary>
- A json serializable server validaion error
- </summary>
- </member>
- <member name="P:Emails.Transactional.Client.ValidationErrorMessage.PropertyName">
- <summary>
- The name of the propery that was invalid
- </summary>
- </member>
- <member name="P:Emails.Transactional.Client.ValidationErrorMessage.ErrorMessage">
- <summary>
- The message that
- </summary>
- </member>
- </members>
-</doc>
diff --git a/Emails.Transactional.Client/Exceptions/InvalidAuthorizationException.cs b/Emails.Transactional.Client/Exceptions/InvalidAuthorizationException.cs
deleted file mode 100644
index 2f31ad9..0000000
--- a/Emails.Transactional.Client/Exceptions/InvalidAuthorizationException.cs
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
-* Copyright (c) 2022 Vaughn Nugent
-*
-* Library: VNLib
-* Package: Emails.Transactional.Client
-* File: InvalidAuthorizationException.cs
-*
-* InvalidAuthorizationException.cs is part of Emails.Transactional.Client which is part of the larger
-* VNLib collection of libraries and utilities.
-*
-* Emails.Transactional.Client is free software: you can redistribute it and/or modify
-* it under the terms of the GNU General Public License as published
-* by the Free Software Foundation, either version 2 of the License,
-* or (at your option) any later version.
-*
-* Emails.Transactional.Client 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
-* General Public License for more details.
-*
-* You should have received a copy of the GNU General Public License
-* along with Emails.Transactional.Client. If not, see http://www.gnu.org/licenses/.
-*/
-
-using System;
-
-using RestSharp;
-
-namespace Emails.Transactional.Client.Exceptions
-{
- /// <summary>
- /// A excption raised when an Authorization error occured
- /// during a request
- /// </summary>
- public class InvalidAuthorizationException : InvalidTransactionResponseException
- {
- ///<inheritdoc/>
- public InvalidAuthorizationException():base()
- {}
- ///<inheritdoc/>
- public InvalidAuthorizationException(string message) : base(message)
- {}
- ///<inheritdoc/>
- public InvalidAuthorizationException(string message, Exception innerException) : base(message, innerException)
- {}
- ///<inheritdoc/>
- public InvalidAuthorizationException(string message, RestResponse<TransactionResult> response) : base(message, response)
- {}
- }
-}
diff --git a/Emails.Transactional.Client/Exceptions/InvalidTransactionRequestException.cs b/Emails.Transactional.Client/Exceptions/InvalidTransactionRequestException.cs
deleted file mode 100644
index a841d92..0000000
--- a/Emails.Transactional.Client/Exceptions/InvalidTransactionRequestException.cs
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
-* Copyright (c) 2022 Vaughn Nugent
-*
-* Library: VNLib
-* Package: Emails.Transactional.Client
-* File: InvalidTransactionRequestException.cs
-*
-* InvalidTransactionRequestException.cs is part of Emails.Transactional.Client which is part of the larger
-* VNLib collection of libraries and utilities.
-*
-* Emails.Transactional.Client is free software: you can redistribute it and/or modify
-* it under the terms of the GNU General Public License as published
-* by the Free Software Foundation, either version 2 of the License,
-* or (at your option) any later version.
-*
-* Emails.Transactional.Client 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
-* General Public License for more details.
-*
-* You should have received a copy of the GNU General Public License
-* along with Emails.Transactional.Client. If not, see http://www.gnu.org/licenses/.
-*/
-
-using System;
-using System.Runtime.Serialization;
-
-using RestSharp;
-
-namespace Emails.Transactional.Client.Exceptions
-{
- public class InvalidTransactionRequestException : TransactionExceptionBase
- {
- ///<inheritdoc/>
- public InvalidTransactionRequestException()
- {}
- ///<inheritdoc/>
- public InvalidTransactionRequestException(string message) : base(message)
- {}
- ///<inheritdoc/>
- public InvalidTransactionRequestException(string message, Exception innerException) : base(message, innerException)
- {}
- ///<inheritdoc/>
- protected InvalidTransactionRequestException(SerializationInfo info, StreamingContext context) : base(info, context)
- {}
-
- public InvalidTransactionRequestException(RestResponse response)
- {
- this.ErrorResponse = response;
- }
- }
-}
diff --git a/Emails.Transactional.Client/Exceptions/InvalidTransactionResponseException.cs b/Emails.Transactional.Client/Exceptions/InvalidTransactionResponseException.cs
deleted file mode 100644
index 100e351..0000000
--- a/Emails.Transactional.Client/Exceptions/InvalidTransactionResponseException.cs
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
-* Copyright (c) 2022 Vaughn Nugent
-*
-* Library: VNLib
-* Package: Emails.Transactional.Client
-* File: InvalidTransactionResponseException.cs
-*
-* InvalidTransactionResponseException.cs is part of Emails.Transactional.Client which is part of the larger
-* VNLib collection of libraries and utilities.
-*
-* Emails.Transactional.Client is free software: you can redistribute it and/or modify
-* it under the terms of the GNU General Public License as published
-* by the Free Software Foundation, either version 2 of the License,
-* or (at your option) any later version.
-*
-* Emails.Transactional.Client 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
-* General Public License for more details.
-*
-* You should have received a copy of the GNU General Public License
-* along with Emails.Transactional.Client. If not, see http://www.gnu.org/licenses/.
-*/
-
-using System;
-using RestSharp;
-
-namespace Emails.Transactional.Client.Exceptions
-{
- /// <summary>
- /// Raised when the results of an email transaction
- /// failed. Inner exceptions may be set
- /// </summary>
- public class InvalidTransactionResponseException : TransactionExceptionBase
- {
- /// <summary>
- /// An error message received from the client
- /// </summary>
- public TransactionResult ErrorMessage { get; init; }
-
- ///<inheritdoc/>
- public InvalidTransactionResponseException()
- {}
- ///<inheritdoc/>
- public InvalidTransactionResponseException(string message) : base(message)
- {}
- ///<inheritdoc/>
- public InvalidTransactionResponseException(string message, Exception innerException) : base(message, innerException)
- {}
-
- /// <summary>
- /// Initializes a new <see cref="InvalidTransactionResponseException"/> with
- /// the response that contains the error
- /// </summary>
- /// <param name="message">The base exception message</param>
- /// <param name="response">The response that caused the error</param>
- public InvalidTransactionResponseException(string message, RestResponse<TransactionResult> response) : base(message, response.ErrorException)
- {
- this.ErrorResponse = response;
- //See if the server sent an error message
- this.ErrorMessage = response.Data;
- }
- }
-}
diff --git a/Emails.Transactional.Client/Exceptions/TransactionExceptionBase.cs b/Emails.Transactional.Client/Exceptions/TransactionExceptionBase.cs
deleted file mode 100644
index a442470..0000000
--- a/Emails.Transactional.Client/Exceptions/TransactionExceptionBase.cs
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
-* Copyright (c) 2022 Vaughn Nugent
-*
-* Library: VNLib
-* Package: Emails.Transactional.Client
-* File: TransactionExceptionBase.cs
-*
-* TransactionExceptionBase.cs is part of Emails.Transactional.Client which is part of the larger
-* VNLib collection of libraries and utilities.
-*
-* Emails.Transactional.Client is free software: you can redistribute it and/or modify
-* it under the terms of the GNU General Public License as published
-* by the Free Software Foundation, either version 2 of the License,
-* or (at your option) any later version.
-*
-* Emails.Transactional.Client 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
-* General Public License for more details.
-*
-* You should have received a copy of the GNU General Public License
-* along with Emails.Transactional.Client. If not, see http://www.gnu.org/licenses/.
-*/
-
-using System;
-using System.Runtime.Serialization;
-
-using RestSharp;
-
-namespace Emails.Transactional.Client.Exceptions
-{
- /// <summary>
- /// A base exception for all client transaction excepions
- /// </summary>
- public class TransactionExceptionBase : Exception
- {
- ///<inheritdoc/>
- public TransactionExceptionBase()
- {}
- ///<inheritdoc/>
- public TransactionExceptionBase(string message) : base(message)
- {}
- ///<inheritdoc/>
- public TransactionExceptionBase(string message, Exception innerException) : base(message, innerException)
- {}
- ///<inheritdoc/>
- protected TransactionExceptionBase(SerializationInfo info, StreamingContext context) : base(info, context)
- {}
-
- /// <summary>
- /// The response objec that caused the exception
- /// </summary>
- public RestResponse ErrorResponse { get; init; }
- /// <summary>
- /// The string represenation of the response body
- /// </summary>
- public string ResultMessage => ErrorResponse.Content;
- }
-} \ No newline at end of file
diff --git a/Emails.Transactional.Client/Exceptions/ValidationFailedException.cs b/Emails.Transactional.Client/Exceptions/ValidationFailedException.cs
deleted file mode 100644
index d8f4bdf..0000000
--- a/Emails.Transactional.Client/Exceptions/ValidationFailedException.cs
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
-* Copyright (c) 2022 Vaughn Nugent
-*
-* Library: VNLib
-* Package: Emails.Transactional.Client
-* File: ValidationFailedException.cs
-*
-* ValidationFailedException.cs is part of Emails.Transactional.Client which is part of the larger
-* VNLib collection of libraries and utilities.
-*
-* Emails.Transactional.Client is free software: you can redistribute it and/or modify
-* it under the terms of the GNU General Public License as published
-* by the Free Software Foundation, either version 2 of the License,
-* or (at your option) any later version.
-*
-* Emails.Transactional.Client 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
-* General Public License for more details.
-*
-* You should have received a copy of the GNU General Public License
-* along with Emails.Transactional.Client. If not, see http://www.gnu.org/licenses/.
-*/
-
-using System;
-using System.Linq;
-using System.Collections.Generic;
-using System.Text;
-
-#nullable enable
-
-namespace Emails.Transactional.Client.Exceptions
-{
- /// <summary>
- /// Raised when server message validation failed
- /// </summary>
- public class ValidationFailedException : InvalidTransactionRequestException
- {
- ///<inheritdoc/>
- public ValidationFailedException()
- {}
- ///<inheritdoc/>
- public ValidationFailedException(string message) : base(message)
- {}
- ///<inheritdoc/>
- public ValidationFailedException(string message, Exception innerException) : base(message, innerException)
- {}
-
- /// <summary>
- /// A collection of validaion error messages
- /// </summary>
- public ICollection<ValidationErrorMessage>? ValidationErrors { get; init; }
- /// <summary>
- ///
- /// </summary>
- /// <param name="result"></param>
- public ValidationFailedException(TransactionResult result):base("Transaction data server validation failed")
- {
- this.ValidationErrors = result?.ValidationErrors;
- }
-
- ///<inheritdoc/>
- public override string Message
- {
- get
- {
- if(ValidationErrors == null)
- {
- return base.Message;
-
- }
- StringBuilder sb = new(base.Message);
- sb.AppendLine();
-
- foreach(var kvp in ValidationErrors)
- {
- sb.Append("Validation error: ");
- sb.Append(kvp.PropertyName);
- sb.Append(' ');
- sb.AppendLine(kvp.ErrorMessage);
- }
- return sb.ToString();
- }
- }
- }
-}
diff --git a/Emails.Transactional.Client/TransactionResult.cs b/Emails.Transactional.Client/TransactionResult.cs
deleted file mode 100644
index 279e0d2..0000000
--- a/Emails.Transactional.Client/TransactionResult.cs
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
-* Copyright (c) 2022 Vaughn Nugent
-*
-* Library: VNLib
-* Package: Emails.Transactional.Client
-* File: TransactionResult.cs
-*
-* TransactionResult.cs is part of Emails.Transactional.Client which is part of the larger
-* VNLib collection of libraries and utilities.
-*
-* Emails.Transactional.Client is free software: you can redistribute it and/or modify
-* it under the terms of the GNU General Public License as published
-* by the Free Software Foundation, either version 2 of the License,
-* or (at your option) any later version.
-*
-* Emails.Transactional.Client 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
-* General Public License for more details.
-*
-* You should have received a copy of the GNU General Public License
-* along with Emails.Transactional.Client. If not, see http://www.gnu.org/licenses/.
-*/
-
-using System.Collections.Generic;
-using System.Text.Json.Serialization;
-
-namespace Emails.Transactional.Client
-{
- /// <summary>
- /// A JSON serializable object that contains the results of the transaction
- /// </summary>
- public class TransactionResult
- {
- [JsonPropertyName("transaction_id")]
- public string TransactionId { get; set; }
- [JsonPropertyName("smtp_status")]
- public string SmtpStatus { get; set; }
- [JsonPropertyName("success")]
- public bool Success { get; set; }
-
- [JsonPropertyName("error_code")]
- public string ErrorCode { get; set; }
-
- [JsonPropertyName("error_description")]
- public string ErrorDescription { get; set; }
-
- [JsonPropertyName("errors")]
- public ICollection<ValidationErrorMessage> ValidationErrors { get; set; }
- }
-}
diff --git a/Emails.Transactional.Client/TransactionalEmailConfig.cs b/Emails.Transactional.Client/TransactionalEmailConfig.cs
deleted file mode 100644
index 1ce5459..0000000
--- a/Emails.Transactional.Client/TransactionalEmailConfig.cs
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
-* Copyright (c) 2022 Vaughn Nugent
-*
-* Library: VNLib
-* Package: Emails.Transactional.Client
-* File: TransactionalEmailConfig.cs
-*
-* TransactionalEmailConfig.cs is part of Emails.Transactional.Client which is part of the larger
-* VNLib collection of libraries and utilities.
-*
-* Emails.Transactional.Client is free software: you can redistribute it and/or modify
-* it under the terms of the GNU General Public License as published
-* by the Free Software Foundation, either version 2 of the License,
-* or (at your option) any later version.
-*
-* Emails.Transactional.Client 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
-* General Public License for more details.
-*
-* You should have received a copy of the GNU General Public License
-* along with Emails.Transactional.Client. If not, see http://www.gnu.org/licenses/.
-*/
-
-using System;
-using System.Collections.Generic;
-
-namespace Emails.Transactional.Client
-{
- /// <summary>
- /// A global configuration object for transactional email clients
- /// </summary>
- public class TransactionalEmailConfig
- {
- /// <summary>
- /// The server transaction endpoint location
- /// </summary>
- public Uri ServiceLocation { get; private set; }
-
- /// <summary>
- /// An email id template/translation table for email template-ids
- /// </summary>
- public IReadOnlyDictionary<string, string> TemplateIdLookup { get; private set; }
-
- /// <summary>
- /// Adds the mail service location to the current instance
- /// </summary>
- /// <param name="serviceLocation">The address of the remote server transaction endpoint</param>
- /// <returns>A referrence to the current object (fluent api)</returns>
- /// <exception cref="ArgumentNullException"></exception>
- public TransactionalEmailConfig WithUrl(Uri serviceLocation)
- {
- ServiceLocation = serviceLocation ?? throw new ArgumentNullException(nameof(serviceLocation));
- return this;
- }
- /// <summary>
- /// Sets the template lookup table for the current instance
- /// </summary>
- /// <param name="templates">The template-id lookup table to referrence</param>
- /// <returns>A referrence to the current object (fluent api)</returns>
- /// <exception cref="ArgumentNullException"></exception>
- public TransactionalEmailConfig WithTemplates(IReadOnlyDictionary<string, string> templates)
- {
- TemplateIdLookup = templates ?? throw new ArgumentNullException(nameof(templates));
- return this;
- }
-
- /// <summary>
- /// Gets a new <see cref="EmailTransactionRequest"/> from the specifed
- /// template name.
- /// </summary>
- /// <param name="templateName"></param>
- /// <returns></returns>
- /// <exception cref="KeyNotFoundException"></exception>
- /// <exception cref="ArgumentNullException"></exception>
- public EmailTransactionRequest GetTemplateRequest(string templateName)
- {
- //get the template from its template name
- string templateId = TemplateIdLookup[templateName];
- return new EmailTransactionRequest(templateId)
- {
- Endpoint = this.ServiceLocation
- };
- }
- }
-}
diff --git a/Emails.Transactional.Client/ValidationErrorMessage.cs b/Emails.Transactional.Client/ValidationErrorMessage.cs
deleted file mode 100644
index e2e5f44..0000000
--- a/Emails.Transactional.Client/ValidationErrorMessage.cs
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
-* Copyright (c) 2022 Vaughn Nugent
-*
-* Library: VNLib
-* Package: Emails.Transactional.Client
-* File: ValidationErrorMessage.cs
-*
-* ValidationErrorMessage.cs is part of Emails.Transactional.Client which is part of the larger
-* VNLib collection of libraries and utilities.
-*
-* Emails.Transactional.Client is free software: you can redistribute it and/or modify
-* it under the terms of the GNU General Public License as published
-* by the Free Software Foundation, either version 2 of the License,
-* or (at your option) any later version.
-*
-* Emails.Transactional.Client 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
-* General Public License for more details.
-*
-* You should have received a copy of the GNU General Public License
-* along with Emails.Transactional.Client. If not, see http://www.gnu.org/licenses/.
-*/
-
-using System.Text.Json.Serialization;
-
-namespace Emails.Transactional.Client
-{
- /// <summary>
- /// A json serializable server validaion error
- /// </summary>
- public class ValidationErrorMessage
- {
- /// <summary>
- /// The name of the propery that was invalid
- /// </summary>
- [JsonPropertyName("property")]
- public string PropertyName { get; set; }
- /// <summary>
- /// The message that
- /// </summary>
- [JsonPropertyName("message")]
- public string ErrorMessage { get; set; }
- }
-}