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

Methods

por_cep  

Public Class methods

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]

[Source]

    # 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

[Validate]