private IViaCepClient CreateViaCepClientInstance()
        {
            var httpClient   = _viaCepFixture.Client;
            var options      = new ViaCepClientOptions();
            var builder      = new ViaCepRequestBuilder(options);
            var restClient   = new RestClient(httpClient);
            var viaCepClient = new Client.ViaCepClient(restClient, builder);

            return(viaCepClient);
        }
        public void ViaCepClientOptions_WhenSetBaseAddress_MustRemoveRelativePath(string baseAddress, string expectedResult)
        {
            // Given
            ViaCepClientOptions options = new ViaCepClientOptions();

            // When
            options.SetBaseAddress(baseAddress);

            // Then
            options.BaseAddress.Should().Be(expectedResult);
        }
        public void ViaCepRequestBuilder_WhenBuildingCepRequest_MustBuildExpectedUri(string cep, string expectedUrlAddress)
        {
            // Given
            ViaCepClientOptions   options = new ViaCepClientOptions();
            IViaCepRequestBuilder builder = new ViaCepRequestBuilder(options);

            Uri expectedUri = new Uri(expectedUrlAddress);

            // When
            Uri actualUri = builder.CreateRequestUri(new Cep(cep));

            // Then
            actualUri.Should().Be(expectedUri);
        }
        /// <summary>
        /// Add IViaCepClient to dependency injection. Though this method, it is possible to configure ViaCepClientOptions instance
        /// </summary>
        public static IServiceCollection AddViaCepClient(this IServiceCollection services, Action<ViaCepClientOptions> configure)
        {
            services.AddHttpClient<IRestClient, RestClient>();
            services.AddSingleton<ViaCepClientOptions>(p =>
            {
                ViaCepClientOptions options = new ViaCepClientOptions();
                configure?.Invoke(options);

                return options;
            });
            services.AddSingleton<IViaCepRequestBuilder, ViaCepRequestBuilder>();
            services.AddScoped<IViaCepClient, ViaCepClient.Client.ViaCepClient>();

            return services;
        }
Ejemplo n.º 5
0
        private static async Task CallViaCepClientDirectly(string cep)
        {
            HttpClient            httpClient   = new HttpClient();
            ViaCepClientOptions   options      = new ViaCepClientOptions();
            IViaCepRequestBuilder builder      = new ViaCepRequestBuilder(options);
            IRestClient           restClient   = new RestClient(httpClient);
            IViaCepClient         viaCepClient = new Client.ViaCepClient(restClient, builder);

            ResponseMessage <CepDetails> response = await viaCepClient.SendRequestAsync(new Cep(cep));

            CepDetails cepDetails = response.Content;

            string json = JsonSerializer.Serialize(cepDetails, new JsonSerializerOptions
            {
                WriteIndented = true,
                Encoder       = JavaScriptEncoder.UnsafeRelaxedJsonEscaping
            });

            Console.WriteLine(json);
        }