class FedexWebServices::Api

Constants

Credentials

Attributes

wiredump[R]

Public Class Methods

new(credentials) click to toggle source
# File lib/fedex_web_services/api.rb, line 13
def initialize(credentials)
  @credentials = credentials
  @wiredump = ""
end

Public Instance Methods

close_smart_post(request) click to toggle source
# File lib/fedex_web_services/api.rb, line 39
def close_smart_post(request)
  issue_request(Close::ClosePortType.new(service_url), request)
end
delete_shipment(request) click to toggle source
# File lib/fedex_web_services/api.rb, line 32
def delete_shipment(request)
  issue_request(Ship::ShipPortType.new(service_url), request)
end
get_rates(request) click to toggle source
# File lib/fedex_web_services/api.rb, line 36
def get_rates(request)
end
process_shipments(requests) click to toggle source
# File lib/fedex_web_services/api.rb, line 18
def process_shipments(requests)
  port = Ship::ShipPortType.new(service_url)
  first_response = nil

  requests.map.with_index do |request, ndx|
    if (ndx == 0)
      first_response = issue_request(port, request)
    else
      request.for_master_tracking_number!(first_response.tracking_number)
      issue_request(port, request)
    end
  end
end
service_url() click to toggle source
# File lib/fedex_web_services/api.rb, line 43
def service_url
  @service_url ||= (@credentials.environment.to_sym == :production) ?
      'https://ws.fedex.com/web-services' :
      'https://wsbeta.fedex.com/web-services'
end

Private Instance Methods

issue_request(port, request) click to toggle source
# File lib/fedex_web_services/api.rb, line 50
def issue_request(port, request)
  port.wiredump_dev = StringIO.new(request_wiredump = "")
  request.issue_request(port, @credentials).tap do |response|
    if (response.errors.any?)
      raise response.errors.map(&:message) * ". "
    end
  end
rescue Exception => root_exception
  err = ServiceException.new(root_exception.message)
  err.details = root_exception.detail.fault.details.validationFailureDetail.message rescue nil
  raise err
ensure
  @wiredump << request_wiredump if (request_wiredump)
end