class ActiveShipping::Correios::CorreiosRequest
Constants
- RETURN_INFORMATION_TYPE
- RETURN_TYPE
- URL
Attributes
destination[R]
origin[R]
urls[R]
Public Class Methods
new(origin, destination, packages, options)
click to toggle source
# File lib/active_shipping/carriers/correios.rb, line 64 def initialize(origin, destination, packages, options) @options = options @origin = origin @destination = destination packages = packages.map do |package| CorreiosPackage.new(package, 1) end @params = { company_id: options[:company_id], password: options[:password], service_type: service_type, origin_zip: origin.zip, destination_zip: destination.zip, mao_propria_extra: parse_boolean(options[:mao_propria_extra]), declared_value_extra: parse_currency(options[:declared_value_extra]), delivery_notice_extra: parse_boolean(options[:delivery_notice_extra]), return_type: RETURN_TYPE, return_information: RETURN_INFORMATION_TYPE[:prices] } @urls = packages.map { |package| create_url(package).to_s } end
Public Instance Methods
create_response(raw_xmls)
click to toggle source
# File lib/active_shipping/carriers/correios.rb, line 88 def create_response(raw_xmls) correios_response = CorreiosResponse.new(self, raw_xmls) correios_response.rate_response end
Private Instance Methods
build_params(package)
click to toggle source
# File lib/active_shipping/carriers/correios.rb, line 103 def build_params(package) @params.merge(package.params) end
create_url(package)
click to toggle source
# File lib/active_shipping/carriers/correios.rb, line 133 def create_url(package) scheme, userinfo, host, port, registry, path, opaque, query, fragment = URI::split(URL) query ||= "" query = CGI.parse(query) .merge(query_string(package)) .to_query URI::HTTP.new(scheme, userinfo, host, port, registry, path, opaque, query, fragment) end
hash_query_string(params)
click to toggle source
# File lib/active_shipping/carriers/correios.rb, line 107 def hash_query_string(params) { 'nCdEmpresa' => params[:company_id], 'sDsSenha' => params[:password], 'nCdServico' => params[:service_type], 'sCepOrigem' => params[:origin_zip], 'sCepDestino' => params[:destination_zip], 'nVlPeso' => params[:weight], 'nCdFormato' => params[:format], 'nVlComprimento' => params[:length], 'nVlAltura' => params[:height], 'nVlLargura' => params[:width], 'nVlDiametro' => params[:diameter], 'sCdMaoPropria' => params[:mao_propria_extra], 'nVlValorDeclarado' => params[:declared_value_extra], 'sCdAvisoRecebimento' => params[:delivery_notice_extra], 'nIndicaCalculo' => params[:return_information], 'StrRetorno' => params[:return_type] } end
parse_boolean(param)
click to toggle source
# File lib/active_shipping/carriers/correios.rb, line 95 def parse_boolean(param) param ? 'S' : 'N' end
parse_currency(param)
click to toggle source
# File lib/active_shipping/carriers/correios.rb, line 99 def parse_currency(param) param.nil? ? '0' : param.to_s.gsub('.', ',') end
query_string(package)
click to toggle source
# File lib/active_shipping/carriers/correios.rb, line 128 def query_string(package) params = build_params(package) hash_query_string(params) end
service_type()
click to toggle source
# File lib/active_shipping/carriers/correios.rb, line 144 def service_type @options[:services].nil? ? DEFAULT_SERVICES.join(',') : @options[:services].join(',') end