module Micropayment::API

Constants

DEFAULT_TIMEOUT
RootCA

Public Instance Methods

call(url, method, data={}) click to toggle source
# File lib/services/api.rb, line 14
def call(url, method, data={})
  ensure_api_key!
  data[:action]     = method
  data[:accessKey]  = Config.api_key
  data[:testMode] ||= Config.sandbox_param
  data.delete_if {|k,v| v.nil? }
  uri = Addressable::URI.parse(url)
  uri.query_values = data
  parseNVP get(uri)
end
ensure_api_key!() click to toggle source
# File lib/services/api.rb, line 10
def ensure_api_key!
  raise "Micropayment::Config.api_key has not been set. See github.com/GeneralScripting/micropayment"  unless Config.api_key
end
get(uri) click to toggle source
# File lib/services/api.rb, line 25
def get(uri)
  use_ssl = uri.scheme == 'https'
  http = Net::HTTP.new(uri.host, use_ssl ? 443 : 80)
  http.use_ssl = use_ssl
  #http.read_timeout = timeout
  if use_ssl
    if File.directory? RootCA
      http.ca_path = RootCA
      http.verify_mode = OpenSSL::SSL::VERIFY_PEER
      http.verify_depth = 5
    else
      http.verify_mode = OpenSSL::SSL::VERIFY_NONE
    end
  end
  response = http.get uri.request_uri, 'User-agent' => 'Micropayment Ruby Client'
  case response
  when Net::HTTPSuccess, Net::HTTPOK
    response.body
  else
    response.error!
  end
end
parseNVP(text) click to toggle source
# File lib/services/api.rb, line 48
def parseNVP(text)
  Addressable::URI.parse("http://example.com?#{text.split("\n").join("&")}").query_values
end