40 lines
1.7 KiB
C#
40 lines
1.7 KiB
C#
|
|
using System.Net.Http.Headers;
|
|||
|
|
using System.Net.Mime;
|
|||
|
|
using Migration.Settings;
|
|||
|
|
using Microsoft.Extensions.Options;
|
|||
|
|
|
|||
|
|
namespace Migration.Services;
|
|||
|
|
public class DataverseProvider : IDataverseProvider
|
|||
|
|
{
|
|||
|
|
public const string HTTP_CLIENT = "FeedDataverseBQ";
|
|||
|
|
private static readonly ProductInfoHeaderValue USER_AGENT = ProductInfoHeaderValue.Parse("FeedDataverseBQ");
|
|||
|
|
private static readonly MediaTypeWithQualityHeaderValue JSON_MEDIA_TYPE = new MediaTypeWithQualityHeaderValue(MediaTypeNames.Application.Json);
|
|||
|
|
public Uri Url { get; init; }
|
|||
|
|
public string Token { get; init; }
|
|||
|
|
public DataverseProvider(IOptions<MainSettings> mainSettingsOptions, IHttpClientFactory httpClientFactory)
|
|||
|
|
{
|
|||
|
|
var DataverseSettings = mainSettingsOptions.Value;
|
|||
|
|
Url = new Uri(DataverseSettings.Url);
|
|||
|
|
Token = DataverseSettings.Token;
|
|||
|
|
}
|
|||
|
|
public static void Setup(IServiceProvider serviceProvider, HttpClient httpClient)
|
|||
|
|
{
|
|||
|
|
var dataverseConnectionsProvider = serviceProvider.GetRequiredService<IDataverseProvider>();
|
|||
|
|
httpClient.BaseAddress = dataverseConnectionsProvider.Url;
|
|||
|
|
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", dataverseConnectionsProvider.Token);
|
|||
|
|
httpClient.DefaultRequestHeaders.UserAgent.Add(USER_AGENT);
|
|||
|
|
httpClient.DefaultRequestHeaders.Accept.Add(JSON_MEDIA_TYPE);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public class DataverseDelegatingHandler : DelegatingHandler
|
|||
|
|
{
|
|||
|
|
protected override HttpResponseMessage Send(HttpRequestMessage request, CancellationToken cancellationToken)
|
|||
|
|
{
|
|||
|
|
return SendAsync(request, cancellationToken).GetAwaiter().GetResult();
|
|||
|
|
}
|
|||
|
|
protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
|
|||
|
|
{
|
|||
|
|
return await base.SendAsync(request, cancellationToken);
|
|||
|
|
}
|
|||
|
|
}
|