class Straight::Blockchain::BiteasyAdapter

Public Class Methods

mainnet_adapter() click to toggle source
# File lib/straight/blockchain_adapters/biteasy_adapter.rb, line 6
def self.mainnet_adapter
  instance = self.instance
  instance._initialize("https://api.biteasy.com/blockchain/v1")
  instance
end
testnet_adapter() click to toggle source
# File lib/straight/blockchain_adapters/biteasy_adapter.rb, line 12
def self.testnet_adapter
  raise "Not Supported Yet"
end

Public Instance Methods

_initialize(base_url) click to toggle source
# File lib/straight/blockchain_adapters/biteasy_adapter.rb, line 16
def _initialize(base_url)
  @base_url = base_url
end
fetch_balance_for(address) click to toggle source

Returns the current balance of the address

# File lib/straight/blockchain_adapters/biteasy_adapter.rb, line 21
def fetch_balance_for(address)
  api_request("/addresses/#{address}")['data']['balance']
end
fetch_transaction(tid, address: nil) click to toggle source

Returns transaction info for the tid

# File lib/straight/blockchain_adapters/biteasy_adapter.rb, line 26
def fetch_transaction(tid, address: nil)
  straighten_transaction api_request("/transactions/#{tid}"), address: address
end
fetch_transactions_for(address) click to toggle source

Returns all transactions for the address

# File lib/straight/blockchain_adapters/biteasy_adapter.rb, line 31
def fetch_transactions_for(address)
  transactions = api_request("/transactions?address=#{address}")['data']['transactions']
  transactions.map { |t| straighten_transaction(t, address: address) }
end

Private Instance Methods

api_request(url) click to toggle source
# File lib/straight/blockchain_adapters/biteasy_adapter.rb, line 38
def api_request(url)
  conn = Faraday.new("#{@base_url}/#{url}", ssl: { verify: false }) do |faraday|
    faraday.adapter Faraday.default_adapter
  end
  result = conn.get
  unless result.status == 200
    raise RequestError, "Cannot access remote API, response code was #{result.code}"
  end
  JSON.parse(result.body)
rescue JSON::ParserError => e
  raise RequestError, YAML::dump(e)
rescue => e
  raise RequestError, YAML::dump(e)
end
straighten_transaction(transaction, address: nil) click to toggle source

Converts transaction info received from the source into the unified format expected by users of BlockchainAdapter instances.

# File lib/straight/blockchain_adapters/biteasy_adapter.rb, line 55
def straighten_transaction(transaction, address: nil)
  outs         = []
  total_amount = 0
  transaction['data']['outputs'].each do |out|
    total_amount += out['value'] if address.nil? || address == out['to_address']
    outs << { amount: out['value'], receiving_address: out['to_address'] } 
  end

  {
    tid:           transaction['data']['hash'],
    total_amount:  total_amount,
    confirmations: transaction['data']['confirmations'],
    outs:          outs
  }
end