0
0
mirror of https://github.com/alex289/CleanArchitecture.git synced 2025-06-29 18:21:08 +00:00
CleanArchitecture/CleanArchitecture.IntegrationTests/Extensions/HttpExtensions.cs
2023-03-09 16:48:04 +01:00

57 lines
1.7 KiB
C#

using System.Text;
using System.Text.Json;
using CleanArchitecture.Api.Models;
namespace CleanArchitecture.IntegrationTests.Extensions;
public static class HttpExensions
{
public static JsonSerializerOptions JsonSerializerOptions = new()
{
PropertyNameCaseInsensitive = true,
};
private static T? Deserialize<T>(string json)
{
if (string.IsNullOrWhiteSpace(json))
{
return default;
}
return JsonSerializer.Deserialize<T>(json, JsonSerializerOptions);
}
private static string Serialize<T>(T data)
{
return JsonSerializer.Serialize(data, JsonSerializerOptions);
}
public static async Task<ResponseMessage<T>?> ReadAsJsonAsync<T>(this HttpContent httpContent)
{
var stringContent = await httpContent.ReadAsStringAsync();
return Deserialize<ResponseMessage<T>>(stringContent);
}
public static Task<HttpResponseMessage> PatchAsJsonAsync<T>(this HttpClient httpClient, string url, T data)
{
var content = new StringContent(Serialize(data), Encoding.UTF8, "application/json");
return httpClient.PatchAsync(url, content);
}
public static Task<HttpResponseMessage> PostAsJsonAsync<T>(this HttpClient httpClient, string url, T data)
{
var content = new StringContent(Serialize(data), Encoding.UTF8, "application/json");
return httpClient.PostAsync(url, content);
}
public static Task<HttpResponseMessage> PutAsJsonAsync<T>(this HttpClient httpClient, string url, T data)
{
var content = new StringContent(Serialize(data), Encoding.UTF8, "application/json");
return httpClient.PutAsync(url, content);
}
}