class Vantiv::Api::Request
Constants
- ENDPOINT_XML_TRANSACTION_TYPE
Attributes
body[R]
Public Class Methods
new(endpoint:, body:, response_object:)
click to toggle source
# File lib/vantiv/api/request.rb, line 16 def initialize(endpoint:, body:, response_object:) @endpoint = endpoint @response_object = response_object @retry_count = 0 @body = populated_request_body(body) end
Public Instance Methods
run()
click to toggle source
# File lib/vantiv/api/request.rb, line 24 def run run_request_with_retries end
run_request()
click to toggle source
# File lib/vantiv/api/request.rb, line 28 def run_request http_response = send_request(build_request) populated_response(@response_object, http_response) end
Private Instance Methods
build_request()
click to toggle source
# File lib/vantiv/api/request.rb, line 55 def build_request request = Net::HTTP::Post.new(uri.request_uri, header) request.body = body.to_xml request end
header()
click to toggle source
# File lib/vantiv/api/request.rb, line 67 def header { "Content-Type" =>"text/xml" } end
increment_retry_count()
click to toggle source
# File lib/vantiv/api/request.rb, line 103 def increment_retry_count @retry_count += 1 end
max_retries_exceeded?()
click to toggle source
# File lib/vantiv/api/request.rb, line 107 def max_retries_exceeded? @retry_count > 3 end
populated_request_body(body)
click to toggle source
# File lib/vantiv/api/request.rb, line 35 def populated_request_body(body) populated_body = body.dup if populated_body.card && populated_body.payment_account populated_body.card.payment_account_id = populated_body.payment_account.id end populated_body.transaction ||= Vantiv::Api::Transaction.new populated_body.transaction.type = ENDPOINT_XML_TRANSACTION_TYPE.fetch(@endpoint.to_sym) populated_body.transaction.address = populated_body.address populated_body.transaction.card = populated_body.card if populated_body.card populated_body.transaction.report_group = populated_body.report_group populated_body.transaction.application_id = populated_body.application_id populated_body.xmlns = "http://www.litle.com/schema" populated_body.version = "10.5" populated_body end
populated_response(response, http_response)
click to toggle source
# File lib/vantiv/api/request.rb, line 87 def populated_response(response, http_response) new_response = response.dup new_response.raw_body = http_response.body new_response.httpok = http_response.code_type == Net::HTTPOK new_response.http_response_code = http_response.code response_body = ResponseBodyRepresenterXml.new( Vantiv::Api::ResponseBody.new ).from_xml(http_response.body) new_response.body = response_body new_response end
root_uri()
click to toggle source
# File lib/vantiv/api/request.rb, line 77 def root_uri if Vantiv::Environment.production? "https://transact.vantivcnp.com" elsif Vantiv::Environment.postcertification? "https://transact.vantivpostlive.com" elsif Vantiv::Environment.precertification? "https://transact.vantivprelive.com" end end
run_request_with_retries()
click to toggle source
# File lib/vantiv/api/request.rb, line 111 def run_request_with_retries begin run_request rescue MultiJson::ParseError, Nokogiri::XML::SyntaxError => e increment_retry_count max_retries_exceeded? ? raise(e) : retry end end
send_request(request)
click to toggle source
# File lib/vantiv/api/request.rb, line 61 def send_request(request) http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true http.request(request) end
uri()
click to toggle source
# File lib/vantiv/api/request.rb, line 73 def uri @uri ||= URI.parse("#{root_uri}/vap/communicator/online") end