Sha256: 908fb96cba8b0acc30206583c9f07116edfef9cab453afaebb952a24ddbf04bf

Contents?: true

Size: 1.51 KB

Versions: 6

Compression:

Stored size: 1.51 KB

Contents

# encoding: UTF-8
module Correios
  module Frete
    class Calculador
      attr_accessor :cep_origem, :cep_destino
      attr_accessor :peso, :comprimento, :altura, :largura, :diametro
      attr_accessor :formato, :mao_propria, :aviso_recebimento, :valor_declarado
      attr_accessor :codigo_empresa, :senha
      attr_writer :web_service, :parser

      DEFAULT_OPTIONS = {
        :peso => 0.0,
        :comprimento => 0.0,
        :altura => 0.0,
        :largura => 0.0,
        :diametro => 0.0,
        :formato => :caixa_pacote, 
        :mao_propria => false, 
        :aviso_recebimento => false, 
        :valor_declarado => 0.0
      }

      def initialize(options = {})
        DEFAULT_OPTIONS.merge(options).each do |attr, value|
          self.send("#{attr}=", value)
        end

        yield self if block_given?
      end

      def web_service
        @web_service ||= Correios::Frete::WebService.new
      end

      def parser
        @parser ||= Correios::Frete::Parser.new
      end

      def calcular(*service_types)
        response = web_service.request(self, service_types)
        services = parser.servicos(response)

        if service_types.size == 1
          services.values.first
        else
          services
        end
      end

      alias calculate calcular

      private

      def method_missing(method_name, *args)
        return calcular($2.to_sym) if method_name.to_s =~ /^(calcular|calculate)_(.*)/ && Correios::Frete::Servico.code_from_type($2.to_sym)
        super
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
correios-frete-1.2.1 lib/correios/frete/calculador.rb
correios-frete-1.2.0 lib/correios/frete/calculador.rb
correios-frete-1.1.0 lib/correios/frete/calculador.rb
correios-frete-1.0.2 lib/correios/frete/calculador.rb
correios-frete-1.0.1 lib/correios/frete/calculador.rb
correios-frete-1.0.0 lib/correios/frete/calculador.rb