예제 #1
0
 private void ValidarModel(EnderecoModel endereco)
 {
     if(string.IsNullOrEmpty(endereco.Rua) || endereco.Numero == 0 || string.IsNullOrEmpty(endereco.Cidade) || string.IsNullOrEmpty(endereco.Estado))
     {
         throw new ArgumentException("Endereço inválido");
     }
 }
예제 #2
0
        public async Task<CoordenadasModel> CoordendasPorEndereco(EnderecoModel endereco)
        {
            ValidarModel(endereco);

            string signatureUrl = MontarUri(endereco);
            string json = await requestJSON.GetJSON(apiConfig.GetGeocodificacaoLink(), signatureUrl);
            if(json != null)
            {
                return ParseJSON(json);
            }

            throw new CoordenadasNaoEcontradasException(string.Format("Endereços não encontrados, rua: '{0}', numero: '{1}', cidade: '{2}', estado: '{3}'", endereco.Rua, endereco.Numero, endereco.Cidade, endereco.Estado));
        }
        public async Task CoordendasPorEnderecoTest()
        {
            var mockRequestJSON = new Mock<IRequestJSON>();
            mockRequestJSON.Setup(t => t.GetJSON(It.IsAny<string>(), It.IsAny<string>())).ReturnsAsync("{ addresses: [{ addressLine: { location: { coordinates : [100, 200] } } }]}");
            IGeocodificacaoApi geocodificacaoApi = new GeocodificacaoApiV0(mapLinkSignature, mockRequestJSON.Object, apiConfig);

            var endereco = new EnderecoModel
            {
                Rua = "Rua",
                Numero = 100,
                Cidade = "Cidade",
                Estado = "Estado"
            };
            var coordendas = await geocodificacaoApi.CoordendasPorEndereco(endereco);

            Assert.AreEqual(coordendas.Latitude, 200.0);
            Assert.AreEqual(coordendas.Longitude, 100.0);
        }
        public async Task CoordendasPorEnderecoNaoEncontradoTest()
        {
            var mockRequestJSON = new Mock<IRequestJSON>();
            mockRequestJSON.Setup(t => t.GetJSON(It.IsAny<string>(), It.IsAny<string>())).ReturnsAsync(null);
            IGeocodificacaoApi geocodificacaoApi = new GeocodificacaoApiV0(mapLinkSignature, mockRequestJSON.Object, apiConfig);

            var endereco = new EnderecoModel
            {
                Rua = "Rua",
                Numero = 100,
                Cidade = "Cidade",
                Estado = "Estado"
            };
            try
            {
                var coordendas = await geocodificacaoApi.CoordendasPorEndereco(endereco);
            }
            catch(CoordenadasNaoEcontradasException ex)
            {
                Assert.AreEqual(ex.Message, "Endereços não encontrados, rua: 'Rua', numero: '100', cidade: 'Cidade', estado: 'Estado'");
                throw ex;
            }          
        }
        public async Task CoordendasPorEnderecoSemEnderecoTest()
        {
            var mockRequestJSON = new Mock<IRequestJSON>();
            mockRequestJSON.Setup(t => t.GetJSON(It.IsAny<string>(), It.IsAny<string>())).ReturnsAsync(null);
            IGeocodificacaoApi geocodificacaoApi = new GeocodificacaoApiV0(mapLinkSignature, mockRequestJSON.Object, apiConfig);

            var endereco = new EnderecoModel
            {
                Rua = "Rua",
                Estado = "Estado"
            };
            try
            {
                var coordendas = await geocodificacaoApi.CoordendasPorEndereco(endereco);
            }
            catch (ArgumentException ex)
            {
                Assert.AreEqual(ex.Message, "Endereço inválido");
                throw ex;
            }
        }
        public async Task CoordendasPorEnderecoJSONInvalidoTest()
        {
            var mockRequestJSON = new Mock<IRequestJSON>();
            mockRequestJSON.Setup(t => t.GetJSON(It.IsAny<string>(), It.IsAny<string>())).ReturnsAsync("{ addresses: { addressLine: { location: { coordinates : [100, 200] } } }}");
            IGeocodificacaoApi geocodificacaoApi = new GeocodificacaoApiV0(mapLinkSignature, mockRequestJSON.Object, apiConfig);

            var endereco = new EnderecoModel
            {
                Rua = "Rua",
                Numero = 100,
                Cidade = "Cidade",
                Estado = "Estado"
            };
            try
            {
                var coordendas = await geocodificacaoApi.CoordendasPorEndereco(endereco);
            }
            catch (ArgumentException ex)
            {
                Assert.AreEqual(ex.Message, "Erro ao realizar a busca de um dos endereços");
                throw ex;
            }
        }
예제 #7
0
 private string MontarUri(EnderecoModel endereco)
 {
     string urlPattern = "{0}/geocode?streetName={1}&houseNumber={2}&city={3}&state={4}&applicationCode={5}";
     var requestUrl = string.Format(urlPattern, apiConfig.GetGeocodificacaoLink(), endereco.Rua, endereco.Numero, endereco.Cidade, endereco.Estado, apiConfig.GetApplicationCode());
     return mapLinkSignature.GenerateSignature(requestUrl, apiConfig.GetToken());
 }