diff options
author | vnugent <public@vaughnnugent.com> | 2023-01-12 17:47:40 -0500 |
---|---|---|
committer | vnugent <public@vaughnnugent.com> | 2023-01-12 17:47:40 -0500 |
commit | d797953c74798252d7153a20e788ed034c71b0ae (patch) | |
tree | bb295b619a4c0ed13d18691063ddaebd3961faf5 /lib/Emails.Transactional.Client/src/Exceptions | |
parent | d8ef5d21416c4a9deaa5cae7d3c8a11fae6a15f7 (diff) |
Large project reorder and consolidation
Diffstat (limited to 'lib/Emails.Transactional.Client/src/Exceptions')
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(); + } + } + } +} |