class ActiveShipping::Correios::CorreiosResponse
Public Class Methods
new(request, raw_xmls)
click to toggle source
# File lib/active_shipping/carriers/correios.rb, line 162 def initialize(request, raw_xmls) @request = request @raw_xmls = raw_xmls @documents = raw_xmls.map { |xml| Nokogiri::XML(xml) } end
Public Instance Methods
rate_response()
click to toggle source
# File lib/active_shipping/carriers/correios.rb, line 168 def rate_response @rates = rates CorreiosRateResponse.new(true, nil, params_options, response_options) rescue => error CorreiosRateResponse.new(false, error.message, {}, response_options) end
Private Instance Methods
create_rate_estimate(rate_hash)
click to toggle source
# File lib/active_shipping/carriers/correios.rb, line 208 def create_rate_estimate(rate_hash) RateEstimate.new(@request.origin, @request.destination, Correios.name, AVAILABLE_SERVICES[rate_hash[:service_code]], rate_hash) end
error?(xml_item)
click to toggle source
# File lib/active_shipping/carriers/correios.rb, line 212 def error?(xml_item) error_id = error_id(xml_item) !error_id.empty? && error_id != "0" end
error_id(xml_item)
click to toggle source
# File lib/active_shipping/carriers/correios.rb, line 217 def error_id(xml_item) xml_item.css('Erro').text end
error_message(xml_item)
click to toggle source
# File lib/active_shipping/carriers/correios.rb, line 221 def error_message(xml_item) xml_item.css('MsgErro').text end
normalized_services()
click to toggle source
# File lib/active_shipping/carriers/correios.rb, line 189 def normalized_services services = @documents.map { |document| document.root.elements }.flatten services = services.group_by do |service_xml| raise(error_message(service_xml)) if error?(service_xml) service_code(service_xml) end end
params_options()
click to toggle source
# File lib/active_shipping/carriers/correios.rb, line 185 def params_options { :responses => @documents } end
price(xml_item)
click to toggle source
# File lib/active_shipping/carriers/correios.rb, line 229 def price(xml_item) xml_item.css('Valor').text.gsub(',', '.').to_f end
rates()
click to toggle source
# File lib/active_shipping/carriers/correios.rb, line 204 def rates rates_array.map { |rate_hash| create_rate_estimate(rate_hash) } end
rates_array()
click to toggle source
# File lib/active_shipping/carriers/correios.rb, line 197 def rates_array services = normalized_services.map do |service_id, elements| total_price = elements.sum { |element| price(element) } { :service_code => service_id, :total_price => total_price, :currency => "BRL" } end end
response_options()
click to toggle source
# File lib/active_shipping/carriers/correios.rb, line 177 def response_options { :rates => @rates, :raw_responses => @raw_xmls, :urls => @request.urls } end
service_code(xml_item)
click to toggle source
# File lib/active_shipping/carriers/correios.rb, line 225 def service_code(xml_item) xml_item.css('Codigo').text.to_i end