#!/usr/bin/env ruby # 21/3/2009 # Carlan Calazans (carlancalazans at gmail.com) require 'rubygems' require 'xml' require 'net/http' include LibXML class CepLivre URL_CEP_LIVRE = 'http://ceplivre.pc2consultoria.com/index.php?module=cep&formato=xml&cep=' FIELDS = %w(tipo_logradouro logradouro bairro cidade estado_sigla) def initialize(cep) @cep = cep get_data end def to_array @result = [] process_a end def to_hash @result = {} process_h end private def get_data @data = Net::HTTP.get_response(URI.parse("#{URL_CEP_LIVRE}#{@cep}")) raise "Connection error." unless @data.kind_of?(Net::HTTPSuccess) @xml = XML::Document.string(@data.body) end def process_a FIELDS.each do |f| field = @xml.find_first("//#{f}") @result << field.content end @result end def process_h FIELDS.each do |f| field = @xml.find_first("//#{f}") @result[f] = field.content end @result end end # Array puts CepLivre.new("29040-470").to_array # Hash puts CepLivre.new("29040-470").to_hash