Sha256: 264db5abd908cd94a89c09a4d0f577cc166f19a1b85cf2c2689be81efc6ea7de
Contents?: true
Size: 1.95 KB
Versions: 1
Compression:
Stored size: 1.95 KB
Contents
# encoding: UTF-8 module Correios module Frete class Calculador attr_accessor :cep_origem, :cep_destino attr_accessor :diametro, :mao_propria, :aviso_recebimento, :valor_declarado attr_accessor :codigo_empresa, :senha, :encomenda attr_writer :peso, :comprimento, :largura, :altura, :formato DEFAULT_OPTIONS = { :peso => 0.0, :comprimento => 0.0, :largura => 0.0, :altura => 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 [:peso, :comprimento, :largura, :altura, :formato].each do |method| define_method method do @encomenda ? @encomenda.send(method) : instance_variable_get("@#{method}") end end def calcular(*service_types) response = web_service(service_types).request! services = parser.servicos(response) if service_types.size == 1 services.values.first else services end end alias calculate calcular 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 def respond_to?(method_name) return true if method_name.to_s =~ /^(calcular|calculate)_(.*)/ && Correios::Frete::Servico.code_from_type($2.to_sym) super end private def web_service(service_types) Correios::Frete::WebService.new(self, service_types) end def parser @parser ||= Correios::Frete::Parser.new end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
correios-frete-alternative-1.10.2 | lib/correios/frete/calculador.rb |