class GmoPayment::ApiRequest

Constants

DEFAULT_TIMEOUT
ENCODE_PARAMS

Public Class Methods

new(request_url, request_params, timeout) click to toggle source
# File lib/gmo_payment/api_request.rb, line 10
def initialize(request_url, request_params, timeout)
  @request_url    = request_url
  @request_params = request_params
  @time_out       = timeout || DEFAULT_TIMEOUT
  @requester      = nil
end

Public Instance Methods

make_request(method = 'post') click to toggle source
# File lib/gmo_payment/api_request.rb, line 17
def make_request(method = 'post')
  host, path = split_base_url_and_path
  @requester = init_http_request(host)
  begin
    @requester.start
    response = if method.casecmp('post').zero?
                 @requester.post(path, to_query_params(@request_params))
               else
                 @requester.get(path, to_query_params(@request_params))
               end
  ensure
    @requester.finish
  end
  response
end
params2log() click to toggle source
# File lib/gmo_payment/api_request.rb, line 33
def params2log
  encode_params(to_query_params(@request_params))
end

Private Instance Methods

encode_params(log_msg) click to toggle source

Encode params string to *** format Eg: CardNo=1234567890123 to CardNo=*********123

# File lib/gmo_payment/api_request.rb, line 60
def encode_params(log_msg)
  params_patterns = "(#{ENCODE_PARAMS.join('|')})=\\w+"
  log_msg.gsub(Regexp.new(params_patterns)) { |match| hide_value(match).to_s }
end
hide_value(param_n_value) click to toggle source

Hide all value if value length <= 10 Otherwise show last 3 characters

# File lib/gmo_payment/api_request.rb, line 67
def hide_value(param_n_value)
  param, value = param_n_value.split('=')
  v_hide       = '*' * value.length
  v_hide << value[-3..-1] if value.length > 10
  "#{param}=#{v_hide}"
end
init_http_request(host) click to toggle source
# File lib/gmo_payment/api_request.rb, line 44
def init_http_request(host)
  http              = Net::HTTP.new(host, 443) # SSL port
  http.open_timeout = @time_out
  http.read_timeout = @time_out
  http.use_ssl      = true
  http
end
split_base_url_and_path() click to toggle source
# File lib/gmo_payment/api_request.rb, line 39
def split_base_url_and_path
  uri = URI.parse(@request_url)
  [uri.host, uri.path]
end
to_query_params(options = {}) click to toggle source
# File lib/gmo_payment/api_request.rb, line 52
def to_query_params(options = {})
  str = ''
  options.each { |k, v| str << "#{k}=#{v}&" }
  str
end