Sha256: 298d97d876075b79f47467cf43e0a561486a1cba2e97d20fef7cc6d445f7c3e0

Contents?: true

Size: 1.16 KB

Versions: 1

Compression:

Stored size: 1.16 KB

Contents

require 'net/http'
require 'uri'

module Maxipago
  module RequestBuilder
    class Request

      def initialize(maxipagoId, apikey)
        @maxipagoId = maxipagoId
        @apikey = apikey
        @api_version = Maxipago::Client::APIVERSION
        @header = { "Content-Type" => 'text/xml' }
      end

      def send_command(opts)
        xml = build_xml(opts)
        send_request(xml)
      end

      private

      def send_request(xml)
        set_uri
        set_http_session

        @http_session.start { |http|
          response = http.post(@uri.path, xml, @header)
          { header: response, body: response.body, message: response.message }
        }
      end

      def set_uri
        raise "This is an abstract method"
      end

      def build_xml(opts)
        raise "This is an abstract method"
      end

      def set_http_session
        @http_session = Net::HTTP.new(@uri.host, @uri.port)
        @http_session.use_ssl = true if @uri.scheme == "https"
        set_ssl_mode if @http_session.use_ssl?
      end

      def set_ssl_mode
        @http_session.verify_mode = OpenSSL::SSL::VERIFY_NONE
        @http_session.ssl_timeout = 30
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
maxipago-0.1.13 lib/maxipago/request_builder/request.rb