From d797953c74798252d7153a20e788ed034c71b0ae Mon Sep 17 00:00:00 2001 From: vnugent Date: Thu, 12 Jan 2023 17:47:40 -0500 Subject: Large project reorder and consolidation --- .../Exceptions/InvalidAuthorizationException.cs | 50 +++++++++++++ .../InvalidTransactionRequestException.cs | 52 +++++++++++++ .../InvalidTransactionResponseException.cs | 64 ++++++++++++++++ .../src/Exceptions/TransactionExceptionBase.cs | 59 +++++++++++++++ .../src/Exceptions/ValidationFailedException.cs | 86 ++++++++++++++++++++++ 5 files changed, 311 insertions(+) create mode 100644 lib/Emails.Transactional.Client/src/Exceptions/InvalidAuthorizationException.cs create mode 100644 lib/Emails.Transactional.Client/src/Exceptions/InvalidTransactionRequestException.cs create mode 100644 lib/Emails.Transactional.Client/src/Exceptions/InvalidTransactionResponseException.cs create mode 100644 lib/Emails.Transactional.Client/src/Exceptions/TransactionExceptionBase.cs create mode 100644 lib/Emails.Transactional.Client/src/Exceptions/ValidationFailedException.cs (limited to 'lib/Emails.Transactional.Client/src/Exceptions') 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 +{ + /// + /// A excption raised when an Authorization error occured + /// during a request + /// + public class InvalidAuthorizationException : InvalidTransactionResponseException + { + /// + public InvalidAuthorizationException():base() + {} + /// + public InvalidAuthorizationException(string message) : base(message) + {} + /// + public InvalidAuthorizationException(string message, Exception innerException) : base(message, innerException) + {} + /// + public InvalidAuthorizationException(string message, RestResponse 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 + { + /// + public InvalidTransactionRequestException() + {} + /// + public InvalidTransactionRequestException(string message) : base(message) + {} + /// + public InvalidTransactionRequestException(string message, Exception innerException) : base(message, innerException) + {} + /// + 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 +{ + /// + /// Raised when the results of an email transaction + /// failed. Inner exceptions may be set + /// + public class InvalidTransactionResponseException : TransactionExceptionBase + { + /// + /// An error message received from the client + /// + public TransactionResult ErrorMessage { get; init; } + + /// + public InvalidTransactionResponseException() + {} + /// + public InvalidTransactionResponseException(string message) : base(message) + {} + /// + public InvalidTransactionResponseException(string message, Exception innerException) : base(message, innerException) + {} + + /// + /// Initializes a new with + /// the response that contains the error + /// + /// The base exception message + /// The response that caused the error + public InvalidTransactionResponseException(string message, RestResponse 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 +{ + /// + /// A base exception for all client transaction excepions + /// + public class TransactionExceptionBase : Exception + { + /// + public TransactionExceptionBase() + {} + /// + public TransactionExceptionBase(string message) : base(message) + {} + /// + public TransactionExceptionBase(string message, Exception innerException) : base(message, innerException) + {} + /// + protected TransactionExceptionBase(SerializationInfo info, StreamingContext context) : base(info, context) + {} + + /// + /// The response objec that caused the exception + /// + public RestResponse ErrorResponse { get; init; } + /// + /// The string represenation of the response body + /// + 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 +{ + /// + /// Raised when server message validation failed + /// + public class ValidationFailedException : InvalidTransactionRequestException + { + /// + public ValidationFailedException() + {} + /// + public ValidationFailedException(string message) : base(message) + {} + /// + public ValidationFailedException(string message, Exception innerException) : base(message, innerException) + {} + + /// + /// A collection of validaion error messages + /// + public ICollection? ValidationErrors { get; init; } + /// + /// + /// + /// + public ValidationFailedException(TransactionResult result):base("Transaction data server validation failed") + { + this.ValidationErrors = result?.ValidationErrors; + } + + /// + 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(); + } + } + } +} -- cgit