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; }
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); }