lib/active_shipping/shipping/carrier.rb in active_shipping-0.12.4 vs lib/active_shipping/shipping/carrier.rb in active_shipping-0.12.5
- old
+ new
@@ -1,56 +1,59 @@
module ActiveMerchant
module Shipping
class Carrier
-
include RequiresParameters
include PostsData
include Quantified
-
+
attr_reader :last_request
attr_accessor :test_mode
alias_method :test_mode?, :test_mode
-
+
# Credentials should be in options hash under keys :login, :password and/or :key.
def initialize(options = {})
- requirements.each {|key| requires!(options, key)}
+ requirements.each { |key| requires!(options, key) }
@options = options
@last_request = nil
@test_mode = @options[:test]
end
# Override to return required keys in options hash for initialize method.
def requirements
[]
end
-
+
# Override with whatever you need to get the rates
def find_rates(origin, destination, packages, options = {})
end
-
+
+ # Override with whatever you need to get a shipping label
+ def create_shipment(origin, destination, packages, options = {})
+ end
+
# Validate credentials with a call to the API. By default this just does a find_rates call
# with the orgin and destination both as the carrier's default_location. Override to provide
# alternate functionality, such as checking for test_mode to use test servers, etc.
def valid_credentials?
location = self.class.default_location
- find_rates(location,location,Package.new(100, [5,15,30]), :test => test_mode)
+ find_rates(location, location, Package.new(100, [5, 15, 30]), :test => test_mode)
rescue ActiveMerchant::Shipping::ResponseError
false
else
true
end
-
+
def maximum_weight
Mass.new(150, :pounds)
end
-
+
protected
-
+
def node_text_or_nil(xml_node)
xml_node ? xml_node.text : nil
end
-
+
# Override in subclasses for non-U.S.-based carriers.
def self.default_location
Location.new( :country => 'US',
:state => 'CA',
:city => 'Beverly Hills',
@@ -58,11 +61,11 @@
:address2 => '3rd Floor',
:zip => '90210',
:phone => '1-310-285-1013',
:fax => '1-310-275-8159')
end
-
+
# Use after building the request to save for later inspection. Probably won't ever be overridden.
def save_request(r)
@last_request = r
end
@@ -70,10 +73,10 @@
return unless days
date = DateTime.now.utc
days.times do
begin
date = date + 1
- end until ![0,6].include?(date.wday)
+ end while [0, 6].include?(date.wday)
end
date
end
end
end