using DD.Persistence.Client.Clients.Interfaces.Refit; using DD.Persistence.Client.Helpers; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Logging; using Refit; using System.Configuration; 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, ILogger> logger, HttpClient client) { //this.client = factory.CreateClient(); this.client = client; var baseUrl = configuration.GetSection("ClientUrl").Get(); if (String.IsNullOrEmpty(baseUrl)) { var exception = new SettingsPropertyNotFoundException("В настройках конфигурации не указан адрес Persistence сервиса."); logger.LogError(exception.Message); throw exception; } client.BaseAddress = new Uri(baseUrl); JsonSerializerOptions JsonSerializerOptions = new() { PropertyNamingPolicy = JsonNamingPolicy.CamelCase, PropertyNameCaseInsensitive = true }; refitSettings = new(new SystemTextJsonContentSerializer(JsonSerializerOptions)); } /// /// создание клиента /// /// public T Create() { return RestService.For(client, refitSettings); } }