/// <summary> /// Inicializa o proxy. /// </summary> /// <param name="conexao">Dados da conexão com o ambiente.</param> /// <param name="logger">Instância de <see cref="ILogger"/> para gestão e armazenamento de logs gerados pelo proxy.</param> /// <param name="rastreioDeRequisicao">Gerador de códigos de rastreio de requisições.</param> /// <param name="webProxy">Especifica um proxy para ser utilizado ao realizar as requisições para os serviços.</param> /// <exception cref="ArgumentNullException">Se a <paramref name="conexao"/> não for informada.</exception> public ProxyDoServico(Conexao conexao, ILogger logger = null, IRastreio rastreioDeRequisicao = null, IWebProxy webProxy = null) { this.Conexao = conexao ?? throw new ArgumentNullException(nameof(conexao)); this.proxy = new(new RastreioDaRequisicao(logger, rastreioDeRequisicao) { Proxy = webProxy, UseProxy = webProxy != null }) { BaseAddress = conexao.Url, DefaultRequestVersion = HttpVersion.Version20, DefaultVersionPolicy = HttpVersionPolicy.RequestVersionOrLower, Timeout = conexao.Timeout }; this.proxy.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue( "Basic", Convert.ToBase64String(Encoding.UTF8.GetBytes($"{conexao.CodigoDoContratante}:{conexao.ChaveDeIntegracao}"))); this.proxy.DefaultRequestHeaders.Add("Accept", $"application/{conexao.FormatoDeSerializacao.ToString().ToLower()}"); this.Lotes = new(proxy, conexao.FormatoDeSerializacao); this.Documentos = new(proxy); this.Financeiro = new(proxy); this.Contratantes = new(proxy); this.Aplicacoes = new(proxy, conexao.FormatoDeSerializacao); this.Notificacoes = new(proxy); this.Anexos = new(proxy); this.Buscador = new(proxy, conexao.FormatoDeSerializacao); this.CarimboDoTempo = new(proxy); this.Dumps = new(proxy, conexao.Ambiente); this.Status = new(conexao.Status); }
public RastreioDaRequisicao(ILogger logger, IRastreio rastreioDeRequisicao) { this.logger = logger; this.rastreioDeRequisicao = rastreioDeRequisicao; }