class Fedex::Request::PickupAvailability
Public Class Methods
new(credentials, options={})
click to toggle source
# File lib/fedex/request/pickup_availability.rb, line 7 def initialize(credentials, options={}) requires!(options, :country_code, :request_type, :carrier_code) @debug = ENV['DEBUG'] == 'true' @credentials = credentials @country_code = options[:country_code] @postal_code = options[:postal_code] if options[:postal_code] @state_code = options[:state_code] if options[:state_code] @request_type = options[:request_type] @carrier_code = options[:carrier_code] @dispatch_date = options[:dispatch_date] if options[:dispatch_date] end
Public Instance Methods
process_request()
click to toggle source
# File lib/fedex/request/pickup_availability.rb, line 21 def process_request api_response = self.class.post(api_url, :body => build_xml) puts api_response if @debug == true response = parse_response(api_response) if success?(response) success_response(api_response, response) else failure_response(api_response, response) end end
Private Instance Methods
add_other_pickup_details(xml)
click to toggle source
# File lib/fedex/request/pickup_availability.rb, line 61 def add_other_pickup_details(xml) xml.PickupRequestType @request_type xml.DispatchDate @dispatch_date if @dispatch_date xml.Carriers @carrier_code end
add_pickup_address(xml)
click to toggle source
# File lib/fedex/request/pickup_availability.rb, line 53 def add_pickup_address(xml) xml.PickupAddress{ xml.PostalCode @postal_code if @postal_code xml.CountryCode @country_code xml.StateOrProvinceCode @state_code if @state_code } end
build_xml()
click to toggle source
Build xml Fedex
Web Service request
# File lib/fedex/request/pickup_availability.rb, line 35 def build_xml ns = "http://fedex.com/ws/pickup/v#{service[:version]}" builder = Nokogiri::XML::Builder.new do |xml| xml.PickupAvailabilityRequest(:xmlns => ns) { add_web_authentication_detail(xml) add_client_detail(xml) add_version(xml) add_pickup_address(xml) add_other_pickup_details(xml) } end builder.doc.root.to_xml end
failure_response(api_response, response)
click to toggle source
Callback used after a failed pickup response.
# File lib/fedex/request/pickup_availability.rb, line 68 def failure_response(api_response, response) error_message = if response[:pickup_availability_reply] [response[:pickup_availability_reply][:notifications]].flatten.first[:message] else "#{api_response["Fault"]["detail"]["fault"]["reason"]}\n--#{api_response["Fault"]["detail"]["fault"]["details"]["ValidationFailureDetail"]["message"].join("\n--")}" end rescue $1 raise RateError, error_message end
service()
click to toggle source
# File lib/fedex/request/pickup_availability.rb, line 49 def service { :id => 'disp', :version => Fedex::PICKUP_API_VERSION } end
success?(response)
click to toggle source
Successful request
# File lib/fedex/request/pickup_availability.rb, line 83 def success?(response) response[:pickup_availability_reply] && %w{SUCCESS WARNING NOTE}.include?(response[:pickup_availability_reply][:highest_severity]) end
success_response(api_response, response)
click to toggle source
Callback used after a successful pickup response.
# File lib/fedex/request/pickup_availability.rb, line 78 def success_response(api_response, response) @response_details = response[:pickup_availability_reply] end