using Bitip.Client.Models; using System.Net.Http; using System.Net.Http.Json; using System.Threading; using System.Threading.Tasks; namespace Bitip.Client.Extensions { internal static class HttpMessageExtensions { public static async Task EnsureSuccessOperation(this HttpResponseMessage response, CancellationToken cancellationToken = default) { if (response.IsSuccessStatusCode) return response; var errorResponse = await response.Content.ReadFromJsonAsync(cancellationToken); if (errorResponse is null) throw new HttpRequestException("An error occurred while fetching Bitip information."); var message = $"{errorResponse.Error}: {errorResponse.Message}"; if (!string.IsNullOrWhiteSpace(errorResponse.Ip)) message += $" (IP: {errorResponse.Ip})"; throw new HttpRequestException(message); } } }