using Centron.Api.docuFORM.Models.Swagger.Responses; using Centron.Interfaces.BL; using System; using System.Collections.Generic; using System.Net; using System.Text; using System.Text.Json; namespace Centron.Api.docuFORM.Helper { public static class HttpResponseMessageExtensions { public static async Task ReadContentAndThrowIfError(this HttpResponseMessage? response) { if(response == null) throw new HttpRequestException ($"No http response received!"); var content = await response.Content.ReadAsStringAsync(); if (!response.IsSuccessStatusCode) throw new HttpRequestException ($"An error occured during the http request: {content}"); return content; } public static async Task> CheckResponseAndDeserializeContent(this HttpResponseMessage? response) { try { if(response == null) throw new HttpRequestException ($"No http response received!"); var content = await ReadContentAndThrowIfError(response); var options = new JsonSerializerOptions { PropertyNameCaseInsensitive = true }; var obj = JsonSerializer.Deserialize(content, options); if(obj != null) return Result.AsSuccess(obj); return Result.AsError("Unable to deserialize object!"); } catch (Exception ex) { return Result.FromException(ex); } } } }