return raw response

This commit is contained in:
Pilzinsel64
2024-12-12 13:34:48 +01:00
parent c8915423fd
commit 93cea9fea3
4 changed files with 9 additions and 5 deletions

View File

@@ -41,7 +41,7 @@ public class ApiClient(string apiUrl) : IApiClient
var res = await Send(route, method, message, @params, serializer); var res = await Send(route, method, message, @params, serializer);
return new(res.StatusCode); return new(res);
} }
public virtual async Task<ApiResponse<TResponse>> SendRequest<TResponse>(string route, HttpMethod method, ApiMessage? message, ApiParameterCollection? @params, IApiMessageSerializer? serializer) where TResponse : ApiMessage public virtual async Task<ApiResponse<TResponse>> SendRequest<TResponse>(string route, HttpMethod method, ApiMessage? message, ApiParameterCollection? @params, IApiMessageSerializer? serializer) where TResponse : ApiMessage
@@ -56,7 +56,7 @@ public class ApiClient(string apiUrl) : IApiClient
if (res.IsSuccessStatusCode) if (res.IsSuccessStatusCode)
result = serializer.Deserialize(await res.Content.ReadAsStringAsync(), typeof(TResponse)) as TResponse; result = serializer.Deserialize(await res.Content.ReadAsStringAsync(), typeof(TResponse)) as TResponse;
return new(res.StatusCode, result); return new(res, result);
} }
protected virtual async Task<HttpResponseMessage> Send(string route, HttpMethod method, ApiMessage? message, ApiParameterCollection? @params, IApiMessageSerializer serializer) protected virtual async Task<HttpResponseMessage> Send(string route, HttpMethod method, ApiMessage? message, ApiParameterCollection? @params, IApiMessageSerializer serializer)

View File

@@ -2,7 +2,7 @@
public abstract class ApiMessage public abstract class ApiMessage
{ {
private class EmptyApiMessage : ApiMessage { } private class EmptyApiMessage : ApiMessage;
public static ApiMessage Empty { get; } = new EmptyApiMessage(); public static ApiMessage Empty { get; } = new EmptyApiMessage();

View File

@@ -3,8 +3,10 @@
namespace Pilz.Net.Api; namespace Pilz.Net.Api;
public record class ApiResponse( public record class ApiResponse(
HttpStatusCode StatusCode) HttpResponseMessage Response)
{ {
public HttpStatusCode StatusCode => Response.StatusCode;
public bool IsOk => StatusCode == HttpStatusCode.OK; public bool IsOk => StatusCode == HttpStatusCode.OK;
public void EnsureOk() public void EnsureOk()

View File

@@ -4,10 +4,12 @@ using System.Net;
namespace Pilz.Net.Api; namespace Pilz.Net.Api;
public record class ApiResponse<T>( public record class ApiResponse<T>(
HttpStatusCode StatusCode, HttpResponseMessage Response,
T? Message) T? Message)
where T : ApiMessage where T : ApiMessage
{ {
public HttpStatusCode StatusCode => Response.StatusCode;
[MemberNotNullWhen(true, nameof(Message))] [MemberNotNullWhen(true, nameof(Message))]
public bool IsOk => StatusCode == HttpStatusCode.OK && Message is not null; public bool IsOk => StatusCode == HttpStatusCode.OK && Message is not null;