class ReactiveShipping::AustraliaPost::CombinedResponse
Public Class Methods
new(origin, destination, packages, requests)
click to toggle source
# File lib/reactive_shipping/carriers/australia_post.rb, line 74 def initialize(origin, destination, packages, requests) @requests = requests @origin = origin @destination = destination @packages = packages end
Public Instance Methods
options()
click to toggle source
# File lib/reactive_shipping/carriers/australia_post.rb, line 81 def options { rates: rates, raw_responses: @requests.map(&:raw_response), request: @requests.map(&:url) } end
params()
click to toggle source
# File lib/reactive_shipping/carriers/australia_post.rb, line 89 def params { responses: @requests.map(&:response) } end
Private Instance Methods
rate_options(rates)
click to toggle source
# File lib/reactive_shipping/carriers/australia_post.rb, line 97 def rate_options(rates) { service_name: rates.first[:service_name], service_code: rates.first[:service_code], total_price: rates.sum { |rate| rate[:total_price] }, currency: 'AUD', delivery_time_text: rates.first[:delivery_time_text] } end
rates()
click to toggle source
# File lib/reactive_shipping/carriers/australia_post.rb, line 107 def rates rates = @requests.map(&:rates).flatten rates.group_by { |rate| rate[:service_name] }.map do |service_name, service_rates| next unless service_rates.size == @packages.size AustraliaPostRateEstimate.new(@origin, @destination, AustraliaPost.name, service_name, rate_options(service_rates)) end.compact end