wabbajack/Wabbajack.Networking.Http/Extensions.cs
2023-08-09 21:29:34 +02:00

36 lines
1.1 KiB
C#

using System.Linq;
using System.Net;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text.Json;
using System.Threading;
using System.Threading.Tasks;
namespace Wabbajack.Networking.Http;
public static class Extensions
{
public static async Task<T> GetJsonFromSendAsync<T>(this HttpClient client, HttpRequestMessage msg,
JsonSerializerOptions opts, CancellationToken? token = null)
{
token ??= CancellationToken.None;
using var result = await client.SendAsync(msg, token.Value);
if (!result.IsSuccessStatusCode)
{
throw new HttpException(result);
}
return (await JsonSerializer.DeserializeAsync<T>(await result.Content.ReadAsStreamAsync(token.Value)))!;
}
public static WebHeaderCollection ToWebHeaderCollection(this HttpRequestHeaders headers)
{
var headerCollection = new WebHeaderCollection();
foreach (var header in headers.Where(header => !WebHeaderCollection.IsRestricted(header.Key)))
{
header.Value.ToList().ForEach(value => headerCollection.Add(header.Key, value));
}
return headerCollection;
}
}