class Correios

Constants

NAO
SIM
VERSION

Public Class Methods

new(cep_origem, cep_destino) click to toggle source
# File lib/correios.rb, line 85
def initialize(cep_origem, cep_destino)
  @cep_origem = cep_origem
  @cep_destino = cep_destino
end

Public Instance Methods

calcular_frete(servicos, peso, comprimento, altura, largura, diametro = 0, mao_propria = NAO, valor_declarado = 0, aviso_recebimento = NAO) click to toggle source
# File lib/correios.rb, line 90
def calcular_frete(servicos, peso, comprimento, altura, largura, diametro = 0, mao_propria = NAO,
                  valor_declarado = 0, aviso_recebimento = NAO)
  host = 'http://ws.correios.com.br'
  path = '/calculador/CalcPrecoPrazo.aspx'

  identificadores = servicos
  identificadores = servicos.to_a.join(',') unless servicos.kind_of? Fixnum

  params = {
    :nCdEmpresa => '',
    :sDsSenha => '',
    :StrRetorno => "xml",
    :nCdServico => identificadores,
    :sCepOrigem => @cep_origem,
    :sCepDestino => @cep_destino,
    :nVlPeso => peso,
    :nCdFormato => 1,
    :nVlComprimento => comprimento,
    :nVlAltura => altura,
    :nVlLargura => largura,
    :nVlDiametro => diametro,
    :sCdMaoPropria => mao_propria,
    :nVlValorDeclarado => valor_declarado,
    :sCdAvisoRecebimento => aviso_recebimento
  }

  params = params.to_a.map {|item| item.to_a.join('=')} .join('&')
  xml_str = open("#{host}#{path}?#{params}").read
  xml = XmlSimple.xml_in(xml_str)

  setup_services xml, servicos
end
get_xml(url) click to toggle source
# File lib/correios.rb, line 123
def get_xml url
  XmlSimple.xml_in(open(url).read)
end
setup_services(xml, servicos) click to toggle source
# File lib/correios.rb, line 127
def setup_services xml, servicos
  if xml["cServico"].size > 1
    servicos = {}
    xml["cServico"].each do |servico|
      servicos[Servico::SERVICOS[servico["Codigo"].first.to_i]] = Servico.new(servico) rescue nil
    end
  else
    servicos = Servico.new(xml["cServico"].first)
  end
  servicos
end