Skip to content

Instantly share code, notes, and snippets.

@srveit
Created October 21, 2009 11:20
Show Gist options
  • Save srveit/215048 to your computer and use it in GitHub Desktop.
Save srveit/215048 to your computer and use it in GitHub Desktop.
class Calculator::FedEx::Base < Calculator::ActiveShipping
def carrier
ActiveMerchant::Shipping::FedEx.new(:key =>Spree::ActiveShipping::Config[:fedex_api_key],
:password =>Spree::ActiveShipping::Config[:fedex_api_password],
:account => Spree::ActiveShipping::Config[:fedex_account_number],
:login => Spree::ActiveShipping::Config[:fedex_meter_number])
end
def to_s
super.gsub("Fed Ex", "FedEx")
end
private
def retrieve_rates(origin, destination, packages)
begin
response = carrier.find_rates(origin, destination, packages, :test => Spree::ActiveShipping::Config[:fedex_test])
# turn this beastly array into a nice little hash
Hash[*response.rates.collect { |rate| [rate.service_name, rate.price] }.flatten]
rescue ActiveMerchant::Shipping::ResponseError => re
msg = "#{I18n.t('shipping_error')}: #{re.message}"
raise Spree::ShippingError.new(msg)
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment