diff --git a/src/WhatsApp/WhatsAppClient.cs b/src/WhatsApp/WhatsAppClient.cs
index 8ba338b..49aeea6 100644
--- a/src/WhatsApp/WhatsAppClient.cs
+++ b/src/WhatsApp/WhatsAppClient.cs
@@ -1,5 +1,6 @@
using System.Net.Http.Headers;
using System.Net.Http.Json;
+using System.Text.Json;
using System.Text.Json.Nodes;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
@@ -15,6 +16,15 @@ namespace Devlooped.WhatsApp;
/// A logger for messages.
public class WhatsAppClient(IHttpClientFactory httpFactory, IOptions options, ILogger logger) : IWhatsAppClient
{
+ static readonly JsonSerializerOptions jsonOptions = new(JsonSerializerDefaults.Web)
+ {
+ DefaultIgnoreCondition =
+ System.Text.Json.Serialization.JsonIgnoreCondition.WhenWritingDefault |
+ System.Text.Json.Serialization.JsonIgnoreCondition.WhenWritingNull,
+ Encoder = System.Text.Encodings.Web.JavaScriptEncoder.UnsafeRelaxedJsonEscaping,
+ WriteIndented = true,
+ };
+
readonly MetaOptions options = options.Value;
///
@@ -55,7 +65,11 @@ public HttpClient CreateHttp(string numberId)
if (!result.IsSuccessStatusCode)
{
- var error = JsonNode.Parse(await result.Content.ReadAsStringAsync())?.ToJsonString(new() { WriteIndented = true });
+ var error = JsonSerializer.Serialize(new
+ {
+ payload,
+ error = JsonNode.Parse(await result.Content.ReadAsStringAsync())
+ }, jsonOptions);
logger.LogError("Failed to send WhatsApp message from {From}: {Error}", numberId, error);
throw new HttpRequestException(error, null, result.StatusCode);
}