aboutsummaryrefslogtreecommitdiff
path: root/lib/Emails.Transactional.Client/src/Exceptions
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 /lib/Emails.Transactional.Client/src/Exceptions
parentd8ef5d21416c4a9deaa5cae7d3c8a11fae6a15f7 (diff)
Large project reorder and consolidation
Diffstat (limited to 'lib/Emails.Transactional.Client/src/Exceptions')
-rw-r--r--lib/Emails.Transactional.Client/src/Exceptions/InvalidAuthorizationException.cs50
-rw-r--r--lib/Emails.Transactional.Client/src/Exceptions/InvalidTransactionRequestException.cs52
-rw-r--r--lib/Emails.Transactional.Client/src/Exceptions/InvalidTransactionResponseException.cs64
-rw-r--r--lib/Emails.Transactional.Client/src/Exceptions/TransactionExceptionBase.cs59
-rw-r--r--lib/Emails.Transactional.Client/src/Exceptions/ValidationFailedException.cs86
5 files changed, 311 insertions, 0 deletions
diff --git a/lib/Emails.Transactional.Client/src/Exceptions/InvalidAuthorizationException.cs b/lib/Emails.Transactional.Client/src/Exceptions/InvalidAuthorizationException.cs
new file mode 100644
index 0000000..2f31ad9
--- /dev/null
+++ b/lib/Emails.Transactional.Client/src/Exceptions/InvalidAuthorizationException.cs
@@ -0,0 +1,50 @@
+/*
+* 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/lib/Emails.Transactional.Client/src/Exceptions/InvalidTransactionRequestException.cs b/lib/Emails.Transactional.Client/src/Exceptions/InvalidTransactionRequestException.cs
new file mode 100644
index 0000000..a841d92
--- /dev/null
+++ b/lib/Emails.Transactional.Client/src/Exceptions/InvalidTransactionRequestException.cs
@@ -0,0 +1,52 @@
+/*
+* 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/lib/Emails.Transactional.Client/src/Exceptions/InvalidTransactionResponseException.cs b/lib/Emails.Transactional.Client/src/Exceptions/InvalidTransactionResponseException.cs
new file mode 100644
index 0000000..100e351
--- /dev/null
+++ b/lib/Emails.Transactional.Client/src/Exceptions/InvalidTransactionResponseException.cs
@@ -0,0 +1,64 @@
+/*
+* 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/lib/Emails.Transactional.Client/src/Exceptions/TransactionExceptionBase.cs b/lib/Emails.Transactional.Client/src/Exceptions/TransactionExceptionBase.cs
new file mode 100644
index 0000000..a442470
--- /dev/null
+++ b/lib/Emails.Transactional.Client/src/Exceptions/TransactionExceptionBase.cs
@@ -0,0 +1,59 @@
+/*
+* 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/lib/Emails.Transactional.Client/src/Exceptions/ValidationFailedException.cs b/lib/Emails.Transactional.Client/src/Exceptions/ValidationFailedException.cs
new file mode 100644
index 0000000..d8f4bdf
--- /dev/null
+++ b/lib/Emails.Transactional.Client/src/Exceptions/ValidationFailedException.cs
@@ -0,0 +1,86 @@
+/*
+* 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();
+ }
+ }
+ }
+}