using DD.Persistence.Client.Clients.Interfaces.Refit;
using DD.Persistence.Client.Helpers;
using Microsoft.Extensions.Configuration;
using Refit;
using System.Text.Json;
namespace DD.Persistence.Client;
///
/// Фабрика, которая создает refit-клиентов
///
///
public class RefitClientFactory : IRefitClientFactory where T : IRefitClient
{
private HttpClient client;
private RefitSettings refitSettings;
///
///
///
public RefitClientFactory(IConfiguration configuration)
{
this.client = new HttpClient();
var baseUrl = configuration.GetSection("ClientUrl").Get()!;
client.BaseAddress = new Uri(baseUrl);
client.Authorize(configuration);
JsonSerializerOptions JsonSerializerOptions = new()
{
PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
PropertyNameCaseInsensitive = true
};
refitSettings = new(new SystemTextJsonContentSerializer(JsonSerializerOptions));
}
///
/// создание клиента
///
///
public T Create()
{
return RestService.For(client, refitSettings);
}
}