Sha256: c13475330e4702a7b273a2f53271cae9026dea90184dca153e5edfc995ffe4d4

Contents?: true

Size: 1.16 KB

Versions: 1

Compression:

Stored size: 1.16 KB

Contents

require 'net/https'
require 'uri'

module Maxipago
  module RequestBuilder
    class Request
      def initialize(maxipagoId, apiKey)
        @maxipagoId = maxipagoId
        @apiKey = apiKey
        @apiVersion = 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|
          repsonse = 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 buid_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.4 lib/maxipago/request_builder/request.rb