diff --git a/Pilz.Net/Api/ApiException.cs b/Pilz.Net/Api/ApiException.cs new file mode 100644 index 0000000..3e07263 --- /dev/null +++ b/Pilz.Net/Api/ApiException.cs @@ -0,0 +1,16 @@ +namespace Pilz.Net.Api; + +public class ApiException : Exception +{ + public ApiException() + { + } + + public ApiException(string? message) : base(message) + { + } + + public ApiException(string? message, Exception? innerException) : base(message, innerException) + { + } +} diff --git a/Pilz.Net/Api/ApiResponse.cs b/Pilz.Net/Api/ApiResponse.cs index 0ccee85..020c64f 100644 --- a/Pilz.Net/Api/ApiResponse.cs +++ b/Pilz.Net/Api/ApiResponse.cs @@ -10,6 +10,6 @@ public record class ApiResponse( public void EnsureOk() { if (!IsOk) - throw new Exception("Api return is not ok!"); + throw new ApiException("Api return is not ok: " + StatusCode); } } diff --git a/Pilz.Net/Api/ApiResponse{T}.cs b/Pilz.Net/Api/ApiResponse{T}.cs index 7f26eb9..f3228c3 100644 --- a/Pilz.Net/Api/ApiResponse{T}.cs +++ b/Pilz.Net/Api/ApiResponse{T}.cs @@ -12,9 +12,10 @@ public record class ApiResponse( public bool IsOk => StatusCode == HttpStatusCode.OK && Message is not null; [MemberNotNull(nameof(Message))] - public void EnsureOk() + public T EnsureOk() { if (!IsOk) - throw new Exception("Api return is not ok!"); + throw new ApiException("Api return is not ok: " + StatusCode); + return Message; } }