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