class FedexWebServices::Request

Attributes

contents[R]

Public Instance Methods

issue_request(port, credentials) click to toggle source
# File lib/fedex_web_services/request.rb, line 25
def issue_request(port, credentials)
  Response.new(port.send(remote_method, request_contents(credentials)))
end
remote_method() click to toggle source
# File lib/fedex_web_services/request.rb, line 13
def remote_method
  raise "remote_method must be implemented by subclasses of Request::Base"
end
service_id() click to toggle source
# File lib/fedex_web_services/request.rb, line 17
def service_id
  raise "service_id must be implemented by subclasses of Request::Base"
end
soap_module() click to toggle source
# File lib/fedex_web_services/request.rb, line 9
def soap_module
  raise "soap_module must be implemented by subclasses of Request::Base"
end
version() click to toggle source
# File lib/fedex_web_services/request.rb, line 21
def version
  raise "version must be implemented by subclasses of Request::Base"
end

Protected Instance Methods

request_contents(credentials) click to toggle source
# File lib/fedex_web_services/request.rb, line 30
def request_contents(credentials)
  mod = self.soap_module
  contents = self.contents.dup

  contents.webAuthenticationDetail =
      mod::WebAuthenticationDetail.new.tap do |wad|
        wad.userCredential = mod::WebAuthenticationCredential.new.tap do |wac|
          wac.key      = credentials.key
          wac.password = credentials.password
        end
      end

  contents.clientDetail = mod::ClientDetail.new.tap do |cd|
    cd.accountNumber = credentials.account_number
    cd.meterNumber   = credentials.meter_number
  end

  contents.version = mod::VersionId.new.tap do |vi|
    vi.serviceId    = service_id
    vi.major        = version
    vi.intermediate = 0
    vi.minor        = 0
  end

  contents
end