| Class | BuscaEndereco |
| In: |
brcep/lib/brcep/busca_endereco.rb
|
| Parent: | Object |
Este recurso usa o webservice da www.bronzebusiness.com.br/webservices/wscep.asmx para realizar as consultas de cep, então, somente funcionará para serviços com acesso a internet e disponibilidade do serviço da Bronze Business.
Como fazer a busca de endereço por cep?
BuscaEndereco.por_cep(22640010) ==> ['Avenida', 'das Americas', 'Barra da Tijuca', 'RJ', 'Rio de Janeiro', 22640100]
BuscaEndereco.por_cep('22640010') ==> ['Avenida', 'das Americas', 'Barra da Tijuca', 'RJ', 'Rio de Janeiro', 22640100]
BuscaEndereco.por_cep('22640-010') ==> ['Avenida', 'das Americas', 'Barra da Tijuca', 'RJ', 'Rio de Janeiro', 22640100]
BuscaEndereco.por_cep('22.640-010') ==> ['Avenida', 'das Americas', 'Barra da Tijuca', 'RJ', 'Rio de Janeiro', 22640100]
BuscaEndereco.por_cep('00000000') ==> RuntimeError 'Cep 00000000 não encontrado.'
Se necessário usar proxy, faça (de preferência em environment.rb):
BuscaEndereco.proxy_addr= 'endereco.do.proxy' BuscaEndereco.proxy_port= 999 # porta a ser utilizada
Retorna um array com os dados de endereçamento para o cep informado ou um erro para cep inexistente.
Exemplo:
BuscaEndereco.por_cep(22640010) ==> ['Avenida', 'das Americas', 'Barra da Tijuca', 'RJ', 'Rio de Janeiro', 22640100]
# File brcep/lib/brcep/busca_endereco.rb, line 29
29: def self.por_cep(numero)
30: cep = numero.to_s.gsub(/\./, '').gsub(/\-/, '').to_i
31: response = Net::HTTP.Proxy(self.proxy_addr,self.proxy_port).get_response(URI.parse("#{URL_WEB_SERVICE}#{cep}"))
32:
33: raise "Não foi possível obter o cep. (#{response.code} - #{response.message})" unless response.kind_of?(Net::HTTPSuccess)
34:
35: doc = REXML::Document.new(response.body)
36:
37: retorno = []
38: %w(logradouro nome bairro UF cidade).each do |e|
39: elemento = REXML::XPath.match(doc, "//#{e}").first
40: raise "Cep #{cep} não encontrado." if elemento.nil?
41:
42: retorno << elemento.text
43: end
44:
45: retorno << cep
46: end