public void ValidateSearchByZipCodeCoverage() { const string resultData = "{'cep': '01001-000','logradouro': 'Praça da Sé','complemento': 'lado ímpar','bairro': 'Sé','localidade': 'São Paulo','uf': 'SP','unidade': '','ibge': '3550308','gia': '1004'}"; var httpClientMock = new MockHttpMessageHandler(); httpClientMock.When("https://viacep.com.br/ws/*/json") .Respond("application/json", resultData); var httpClient = new HttpClient(httpClientMock) { BaseAddress = _baseUrl }; var client = new ViaCepClient(httpClient); var result = client.Search("01001000"); Assert.NotNull(result); Assert.Equal("01001-000", result.ZipCode); Assert.Equal("Praça da Sé", result.Street); Assert.Equal("lado ímpar", result.Complement); Assert.Equal("Sé", result.Neighborhood); Assert.Equal("São Paulo", result.City); Assert.Equal("SP", result.StateInitials); Assert.Equal(string.Empty, result.Unit); Assert.Equal(3550308, result.IBGECode); Assert.True(result.GIACode.HasValue); Assert.Equal(1004, result.GIACode); }
public void ValidateSearchByAddressCoverage() { const string resultData = "[ { 'cep': '91790-072', 'logradouro': 'Rua Domingos José Poli', 'complemento': '', 'bairro': 'Restinga', 'localidade': 'Porto Alegre', 'uf': 'RS', 'unidade': '', 'ibge': '4314902', 'gia': '' }, { 'cep': '91910-420', 'logradouro': 'Rua José Domingos Varella', 'complemento': '', 'bairro': 'Cavalhada', 'localidade': 'Porto Alegre', 'uf': 'RS', 'unidade': '', 'ibge': '4314902', 'gia': '' }, { 'cep': '90420-200', 'logradouro': 'Rua Domingos José de Almeida', 'complemento': '', 'bairro': 'Rio Branco', 'localidade': 'Porto Alegre', 'uf': 'RS', 'unidade': '', 'ibge': '4314902', 'gia': '' } ]"; var httpClientMock = new MockHttpMessageHandler(); httpClientMock.When("https://viacep.com.br/ws/*/*/*/json") .Respond("application/json", resultData); var httpClient = new HttpClient(httpClientMock) { BaseAddress = _baseUrl }; var client = new ViaCepClient(httpClient); var results = client.Search("RS", "Porto Alegre", "Domingos Jose"); Assert.NotNull(results); var list = results.ToList(); Assert.Equal(3, list.Count); Assert.All(list, result => Assert.False(result.GIACode.HasValue)); Assert.All(list, result => Assert.Empty(result.Complement)); Assert.All(list, result => Assert.Equal("Porto Alegre", result.City)); Assert.All(list, result => Assert.Equal("RS", result.StateInitials)); Assert.All(list, result => Assert.Equal(4314902, result.IBGECode)); }
public ViaCepResult Search([FromBody] string zipCode) { var client = new ViaCepClient(); var result = client.Search(zipCode); string jsonString = JsonSerializer.Serialize(result); Console.WriteLine(jsonString); return(result); }
private void metroTextBoxCEP_Leave(object sender, EventArgs e) { string cep = UtilityClass.retornaApenasNumeros(this.metroTextBoxCEP.Text); if (cep.Length == 8) { try { ViaCepClient viaCepClient = new ViaCepClient(); ViaCepResult resultadoPesquisaCEP = viaCepClient.Search(cep); if (string.IsNullOrWhiteSpace(resultadoPesquisaCEP.StateInitials)) { MessageBox.Show("Não foi possível validar o CEP e preencher automaticamente os campos. Você pode enviar este CEP " + "e preencher os campos manualmente, mas é recomendado verificar se o CEP inserido é valido.", "CEP não encontrado na base de dados", MessageBoxButtons.OK, MessageBoxIcon.Warning); } else { this.metroTextBoxCEP.Text = cep; this.metroComboBoxEstados.SelectedItem = UtilityClass.getNomeUFbyIniciais(resultadoPesquisaCEP.StateInitials); this.metroTextBoxBairro.Text = resultadoPesquisaCEP.Neighborhood; this.metroTextBoxCidade.Text = resultadoPesquisaCEP.City; this.metroTextBoxRua.Text = resultadoPesquisaCEP.Street; } } catch (Exception ex) { MensagemModel mensagem = new MensagemModel("Erro ao se conectar na API da ViaCEP", "Ocorreram erros na utilização no Excel, tente novamente."); LogModel log = new LogModel(mensagem.Titulo, ex.Message, ex.StackTrace, DateTime.Now); LogController.logarErro(log); MessageBox.Show(mensagem.Corpo, mensagem.Titulo, MessageBoxButtons.OK); } } else { MessageBox.Show("O CEP inserido é invalido, um cep deve possuir exatamente 8 números", "CEP inválido", MessageBoxButtons.OK, MessageBoxIcon.Warning); } }
public Endereco(string cep, int numero, string complemento, string logradouro = "", string bairro = "") { CEP = cep; Numero = numero; Complemento = complemento; var viaCepResult = new ViaCepClient().Search(CEP); //Logradouro = !string.IsNullOrEmpty(viaCepResult.Street) ? viaCepResult.Street : logradouro; Logradouro = viaCepResult.Street ?? logradouro; if (!string.IsNullOrEmpty(viaCepResult.Neighborhood)) { Bairro = viaCepResult.Neighborhood; } else { Bairro = bairro; } Cidade = viaCepResult.City; Estado = viaCepResult.StateInitials; }
public void ValidateCreateNewInstance() { var client = new ViaCepClient(); Assert.NotNull(client); }
public static async Task <string> Handle(MessageResult result) { var builder = new MessageBuilder(Constants.DefaultSeparator); var userDb = new DbWriter($"{AppDomain.CurrentDomain.BaseDirectory}User.csv", "Username;Password"); var cepDb = new DbWriter($"{AppDomain.CurrentDomain.BaseDirectory}Cep.csv", "UserId;Cep;Logradouro;Bairro;Complemento;Cidade;Uf;DataBusca"); switch (result.MessageType.ToUpper()) { case "CADASTRAR": { //TODO: Cadastrar usuário no CSV var username = result.GetFieldValue("USERNAME"); var password = result.GetFieldValue("PASSWORD"); if (string.IsNullOrWhiteSpace(password) || string.IsNullOrWhiteSpace(username)) { builder.AddFailure("Usuário ou senha estão vazios ou nulos"); } else if (password.Length < 8) { builder.AddFailure("A senha deve possuir pelo menos 8 caracteres"); } else { var emailRegex = new Regex(@"^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$"); if (!emailRegex.Match(username).Success) { builder.AddFailure("Email invalido"); } else if (userDb.GetLines("Username", username).Count() > 0) { builder.AddFailure("Usuario ja cadastrado"); } else { password = UserHelper.Encrypt(password); Console.WriteLine(userDb.InsertLine(new string[] { username, password })); builder.AddSucess(); } } break; } case "LOGIN": { var username = result.GetFieldValue("USERNAME"); var password = result.GetFieldValue("PASSWORD"); var connectionDurationStr = result.GetFieldValue("CONNECTION_DURATION"); Int32.TryParse(connectionDurationStr, out int connectionDuration); if (connectionDuration <= 0) { builder.AddFailure("Tempo de conexão inválido"); break; } if (string.IsNullOrWhiteSpace(username) || string.IsNullOrWhiteSpace(password)) { builder.AddFailure("Usuário ou senha inválidos"); break; } var userLines = userDb.GetLines("Username", username); if (userLines.Count != 1) { builder.AddFailure("Usuário ou senha inválidos"); break; } var user = userLines.FirstOrDefault(); if (user == null || !UserHelper.PasswordEquals(password, user[1])) { builder.AddFailure("Usuário ou senha inválidos"); break; } builder.AddSucess(); builder.AddField("TOKEN", UserHelper.GenerateToken(user[0], connectionDuration)); break; } case "CEP": { var token = result.GetFieldValue("TOKEN"); var userId = UserHelper.ValidateToken(token); if (string.IsNullOrWhiteSpace(userId)) { builder.AddFailure("Token inválido"); break; } var cep = result.GetFieldValue("CEP"); var client = new ViaCepClient(); var address = await client.GetAddressByCep(cep); if (address.Erro) { builder.AddFailure("Endereço não encontrado"); break; } builder.AddSucess(); builder.AddField("CEP", address.Cep); builder.AddField("LOGRADOURO", address.Logradouro); builder.AddField("BAIRRO", address.Bairro); builder.AddField("COMPLEMENTO", address.Complemento); builder.AddField("CIDADE", address.Localidade); builder.AddField("UF", address.Uf); //Salvar no Historico cepDb.InsertLine(new string[] { userId, address.Cep, address.Logradouro, address.Bairro, address.Complemento, address.Localidade, address.Uf, DateTime.Now.ToString() }); break; } case "HISTORICO": { var token = result.GetFieldValue("TOKEN"); var userId = UserHelper.ValidateToken(token); if (string.IsNullOrWhiteSpace(userId)) { builder.AddFailure("Token inválido"); break; } var results = cepDb.GetLines("UserId", userId); if (!results.Any()) { builder.AddFailure("Histórico vazio"); break; } builder.AddSucess(); int i = 0; foreach (var line in results) { builder.AddField("INDEX", i.ToString()); builder.AddField("USER_ID", line[0]); builder.AddField("CEP", line[1]); builder.AddField("LOGRADOURO", line[2]); builder.AddField("BAIRRO", line[3]); builder.AddField("COMPLEMENTO", line[4]); builder.AddField("CIDADE", line[5]); builder.AddField("UF", line[6]); builder.AddField("DATA_DA_BUSCA", line[7]); i++; } break; } default: { builder.AddFailure("Mensagem inválida"); break; } } return(builder.BuildValues()); }