class SolidusEasypost::Estimator
Public Instance Methods
shipping_rates(package, _frontend_only = true)
click to toggle source
# File lib/solidus_easypost/estimator.rb, line 5 def shipping_rates(package, _frontend_only = true) easypost_rates = ShipmentBuilder.from_package(package).rates.sort_by(&:rate) shipping_rates = easypost_rates.map { |rate| build_shipping_rate(rate) }.compact shipping_rates.min_by(&:cost)&.selected = true shipping_rates end
Private Instance Methods
build_shipping_rate(rate)
click to toggle source
# File lib/solidus_easypost/estimator.rb, line 16 def build_shipping_rate(rate) shipping_method = shipping_method_selector.shipping_method_for(rate) return unless shipping_method.available_to_users? ::Spree::ShippingRate.new( name: "#{rate.carrier} #{rate.service}", cost: shipping_rate_calculator.compute(rate), easy_post_shipment_id: rate.shipment_id, easy_post_rate_id: rate.id, shipping_method: shipping_method, ) end
shipping_method_selector()
click to toggle source
# File lib/solidus_easypost/estimator.rb, line 33 def shipping_method_selector @shipping_method_selector ||= SolidusEasypost.configuration.shipping_method_selector_class.new end
shipping_rate_calculator()
click to toggle source
# File lib/solidus_easypost/estimator.rb, line 29 def shipping_rate_calculator @shipping_rate_calculator ||= SolidusEasypost.configuration.shipping_rate_calculator_class.new end