/// <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);
        }
Exemplo n.º 2
0
 public RastreioDaRequisicao(ILogger logger, IRastreio rastreioDeRequisicao)
 {
     this.logger = logger;
     this.rastreioDeRequisicao = rastreioDeRequisicao;
 }