class CcbConnectClient::Service::Handler

Public Instance Methods

response_handler(request, response) click to toggle source
# File lib/ccb_connect_client/service.rb, line 20
def response_handler(request, response)
  res = http_post_form CcbConnectClient.server, request.to_xml
  doc = Document.new(res.body)

  if doc.elements["TX/RETURN_CODE"].text != "000000"
    result = BaseResponse.from_xml res.body
    result.successful = false
  else
    result = response.from_xml res.body
    result.successful = true
  end
  result
end

Private Instance Methods

http_post_form(url, xml) click to toggle source
# File lib/ccb_connect_client/service.rb, line 36
def http_post_form(url, xml)
  uri = URI.parse(url)
  req = Net::HTTP::Post.new(uri)
  req["Content-Type"] = "application/x-www-form-urlencoded"
  # We don't accpet gzip encoding since the http.request method will raise the EOF error
  req["Accept-Encoding"] = "identity"
  res = Net::HTTP.start(uri.host, uri.port, :use_ssl => uri.scheme == 'https') do |http|
    if CcbConnectClient.debug_mode && CcbConnectClient.logger
      CcbConnectClient.logger.debug("CCB Connect requset xml : #{xml}")
    end
    req.set_form_data('requestXml' => xml)
    http.request req
  end
  if CcbConnectClient.debug_mode && CcbConnectClient.logger
    CcbConnectClient.logger.debug("CCB Connect response: #{res.body}")
  end
  res
end