using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Reflection;
using System.Threading;
using System.Threading.Tasks;
using RestSharp;
namespace InfluxDB.Client.Core.Internal
{
internal static class RestSharpExtensions
{
///
/// Transform `HttpHeaders` to `HeaderParameter` type.
///
///
/// Additionally content Headers
/// IEnumerable<HeaderParameter>
internal static IEnumerable ToHeaderParameters(this HttpHeaders httpHeaders,
HttpContentHeaders httpContentHeaders = null)
{
return httpHeaders
.Concat(httpContentHeaders ?? Enumerable.Empty>>())
.SelectMany(x => x.Value.Select(y => (x.Key, y)))
.Select(x => new HeaderParameter(x.Key, x.y));
}
internal static RestRequest AddAdvancedResponseHandler(this RestRequest restRequest,
Func advancedResponseWriter)
{
var field = restRequest.GetType()
.GetField("_advancedResponseHandler", BindingFlags.Instance | BindingFlags.NonPublic);
field!.SetValue(restRequest, advancedResponseWriter);
return restRequest;
}
internal static RestResponse ExecuteSync(this RestClient client,
RestRequest request, CancellationToken cancellationToken = default)
{
return client.Execute(request, cancellationToken);
}
}
}