From 597fe9c9ce621a03547138fcb56473c3acab7b4d Mon Sep 17 00:00:00 2001 From: Aleksander Heintz Date: Tue, 17 Dec 2024 14:44:08 +0100 Subject: [PATCH] feat: add `ProblemInstanceException` Also add `EnsureSuccess` to `Result`. --- .../ProblemInstanceException.cs | 23 +++++++++++++++++++ .../src/ProblemDetails.Abstractions/Result.cs | 13 +++++++++++ 2 files changed, 36 insertions(+) create mode 100644 src/Altinn.Authorization.ProblemDetails/src/ProblemDetails.Abstractions/ProblemInstanceException.cs diff --git a/src/Altinn.Authorization.ProblemDetails/src/ProblemDetails.Abstractions/ProblemInstanceException.cs b/src/Altinn.Authorization.ProblemDetails/src/ProblemDetails.Abstractions/ProblemInstanceException.cs new file mode 100644 index 0000000..bc4cb18 --- /dev/null +++ b/src/Altinn.Authorization.ProblemDetails/src/ProblemDetails.Abstractions/ProblemInstanceException.cs @@ -0,0 +1,23 @@ +namespace Altinn.Authorization.ProblemDetails; + +/// +/// An exception that represents a . +/// +public class ProblemInstanceException + : InvalidOperationException +{ + /// + /// Initializes a new instance of the class. + /// + /// The . + public ProblemInstanceException(ProblemInstance problemInstance) + : base(problemInstance.Detail) + { + ProblemInstance = problemInstance; + } + + /// + /// Gets the . + /// + public ProblemInstance ProblemInstance { get; } +} diff --git a/src/Altinn.Authorization.ProblemDetails/src/ProblemDetails.Abstractions/Result.cs b/src/Altinn.Authorization.ProblemDetails/src/ProblemDetails.Abstractions/Result.cs index 637a4d7..0cf9f2b 100644 --- a/src/Altinn.Authorization.ProblemDetails/src/ProblemDetails.Abstractions/Result.cs +++ b/src/Altinn.Authorization.ProblemDetails/src/ProblemDetails.Abstractions/Result.cs @@ -49,6 +49,19 @@ public bool IsSuccess get => _problem is null; } + /// + /// Ensures that the operation succeeded. + /// + /// Thrown if the operation failed. + [MemberNotNull(nameof(Value))] + public void EnsureSuccess() + { + if (!IsSuccess) + { + throw new ProblemInstanceException(_problem!); + } + } + /// /// Gets the problem instance if the operation failed, otherwise . ///