コード例 #1
0
        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);
        }
コード例 #2
0
        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));
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
            }
        }
コード例 #5
0
        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;
        }
コード例 #6
0
        public void ValidateCreateNewInstance()
        {
            var client = new ViaCepClient();

            Assert.NotNull(client);
        }
コード例 #7
0
        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());
        }