Sha256: 1dee08317a4bee5763304cb6477d7ae1b46d8528ea3a4ef9ca4f4a462eb0c29b

Contents?: true

Size: 1.07 KB

Versions: 4

Compression:

Stored size: 1.07 KB

Contents

module BraspagPagador
  class Poster
    def initialize(connection, url)
      @connection = connection
      @request = ::HTTPI::Request.new(url)
    end

    def do_post(method, data, headers = {})
      @request.body = data
      @request.proxy = @connection.proxy_address if @connection.proxy_address
      headers.each_pair do |k,v|
        @request.headers[k] = v
      end

      with_logger(method) do
        ::HTTPI.post @request
      end
    end

    private

    def with_logger(method)
      if @connection.logger
        @connection.logger.info("[Braspag] ##{method}: #{@request.url}, data: #{mask_data(@request.body).inspect}")
        response = yield
        @connection.logger.info("[Braspag] ##{method} returns: #{response.body.inspect}")
      else
        response = yield
      end
      response
    end

    def mask_data(data)
      copy_data = data.dup
      copy_data['cardNumber'] = "************%s" % copy_data['cardNumber'][-4..-1] if copy_data['cardNumber']
      copy_data['securityCode'] = "***" if copy_data['securityCode']
      copy_data
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
braspag-pagador-1.0.1 lib/braspag-pagador/core/poster.rb
braspag-pagador-1.0.0 lib/braspag-pagador/core/poster.rb
braspag-pagador-0.9.6 lib/braspag-pagador/core/poster.rb
braspag-pagador-0.9.5 lib/braspag-pagador/core/poster.rb