class AuthorizeNet::Request

This class represents a request to the Authorize.Net API

Add any logic that applies to ALL requests here

Attributes

response[RW]

Public Class Methods

new(type, data, uri) click to toggle source
# File lib/authorize_net/request.rb, line 13
def initialize(type, data, uri)
  @xml_data = data
  @request_type = type
  @uri = URI(uri)
  @response = nil
end

Public Instance Methods

getRequest() click to toggle source

Uses the given data to make a GET request

# File lib/authorize_net/request.rb, line 36
def getRequest
  assertRequestType
  req = Net::HTTP::Get.new(@uri.request_uri)
  req.add_field('Content-Type', 'text/xml')
  req.body = buildXmlRequest
end
postRequest() click to toggle source

Uses the given data to make a POST request

# File lib/authorize_net/request.rb, line 23
def postRequest
  assertRequestData
  assertRequestType
  req = Net::HTTP::Post.new(@uri.request_uri)
  req.add_field('Content-Type', 'text/xml')
  req.body = buildXmlRequest
  @response = sendRequest(req)
  return @response
end
toLog(log_body) click to toggle source

Make a log string for this request

# File lib/authorize_net/request.rb, line 46
def toLog(log_body)
  log = "[AuthorizeNet] HTTP Request type=#{@request_type} uri=#{@uri}"

  if log_body
    log += " body=\"#{buildXmlRequest}\""
  end

  return log
end

Private Instance Methods

assertRequestData() click to toggle source
# File lib/authorize_net/request.rb, line 59
def assertRequestData
  if @xml_data.nil?
    raise "AuthorizeRequest has no xml data"
  end
end
assertRequestType() click to toggle source
# File lib/authorize_net/request.rb, line 65
def assertRequestType
  if @request_type.nil?
    raise "AuthorizeRequest has no request type"
  end
end
buildXmlRequest() click to toggle source

Builds the full XML request using request type and the xml data object

# File lib/authorize_net/request.rb, line 75
def buildXmlRequest
  xml_string = AuthorizeNet::XML_HEADER
  xml_string += "<#{@request_type} xmlns=\"#{AuthorizeNet::XML_SCHEMA}\">"
  xml_string += AuthorizeNet::Util.buildXmlFromObject(@xml_data)
  xml_string += "</#{@request_type}>"
  return xml_string
end
sendRequest(req) click to toggle source

Sends the input request to Authorize.Net

# File lib/authorize_net/request.rb, line 86
def sendRequest(req)
  http = Net::HTTP.start(@uri.host, @uri.port, :use_ssl => @uri.scheme == 'https')
  @response = http.request(req)
  return @response
end