class Moolah::Client

Constants

CREATE_TRANSACTION_ACTION
QUERY_TRANSACTION_ACTION

Public Class Methods

new() click to toggle source
# File lib/moolah/client.rb, line 10
def initialize
  # Check for API key
  raise ArgumentError, "API Key is not set!" unless Moolah.api_key
end

Public Instance Methods

connection() click to toggle source

Connection method for ease of stubbing

# File lib/moolah/client.rb, line 58
def connection
  @connection ||= Faraday.new(url: Moolah.endpoint)
end
create_transaction(transaction_params = {}) click to toggle source
# File lib/moolah/client.rb, line 15
def create_transaction(transaction_params = {})
  coin = transaction_params[:coin] || transaction_params["coin"]
  currency = transaction_params[:currency] || transaction_params["currency"]
  amount = transaction_params[:amount] || transaction_params["amount"]
  product = transaction_params[:product] || transaction_params["product"]

  # Check all parameters present
  raise ArgumentError, "Missing transaction parameter(s)" unless coin && currency && amount && product

  request_body = { coin: coin, currency: currency, amount: amount, product: product, apiKey: Moolah.api_key }

  ipn = transaction_params[:ipn] || transaction_params["ipn"]
  if ipn
    ipn_extra = transaction_params[:ipn_extra] || transaction_params["ipn_extra"]
    request_body[:ipn] = ipn 
    request_body[:ipn_extra] = ipn_extra
    request_body[:apiSecret] = Moolah.api_secret
  end

  faraday_response = connection.post do |request|
    request.url CREATE_TRANSACTION_ACTION
    request.body = request_body
  end

  json_response = JSON.parse(faraday_response.body)
  symbolize_keys(json_response)
end
query_transaction(params = {}) click to toggle source
# File lib/moolah/client.rb, line 43
def query_transaction(params = {})
  guid = params[:guid] || params["guid"]

  request_body = { guid: guid, apiKey: Moolah.api_key }

  faraday_response = connection.post do |request|
    request.url QUERY_TRANSACTION_ACTION
    request.body = request_body
  end

  json_response = JSON.parse(faraday_response.body)
  symbolize_keys(json_response)
end
symbolize_keys(hash) click to toggle source
# File lib/moolah/client.rb, line 62
def symbolize_keys(hash)
  return hash unless hash.is_a?(Hash)

  symbolized_hash = hash.inject({}) do |memo, (k,v)|
    memo[k.to_sym] = symbolize_keys(v)
    memo
  end
  symbolized_hash
end