Class: Straight::Blockchain::BlockchainInfoAdapter
- Defined in:
- lib/straight/blockchain_adapters/blockchain_info_adapter.rb
Constant Summary
Constants inherited from Adapter
Class Method Summary collapse
Instance Method Summary collapse
- #_initialize(base_url) ⇒ Object
-
#fetch_balance_for(address) ⇒ Object
Returns the current balance of the address.
-
#fetch_transaction(tid, address: nil) ⇒ Object
Returns transaction info for the tid.
-
#fetch_transactions_for(address) ⇒ Object
Returns all transactions for the address.
- #latest_block(force_reload: false) ⇒ Object
Class Method Details
.mainnet_adapter ⇒ Object
6 7 8 9 10 |
# File 'lib/straight/blockchain_adapters/blockchain_info_adapter.rb', line 6 def self.mainnet_adapter instance = self.instance instance._initialize("https://blockchain.info") instance end |
.testnet_adapter ⇒ Object
12 13 14 |
# File 'lib/straight/blockchain_adapters/blockchain_info_adapter.rb', line 12 def self.testnet_adapter raise "Not Supported Yet" end |
Instance Method Details
#_initialize(base_url) ⇒ Object
16 17 18 19 |
# File 'lib/straight/blockchain_adapters/blockchain_info_adapter.rb', line 16 def _initialize(base_url) @latest_block = { cache_timestamp: nil, block: nil } @base_url = base_url end |
#fetch_balance_for(address) ⇒ Object
Returns the current balance of the address
33 34 35 |
# File 'lib/straight/blockchain_adapters/blockchain_info_adapter.rb', line 33 def fetch_balance_for(address) api_request("/rawaddr/#{address}")['final_balance'] end |
#fetch_transaction(tid, address: nil) ⇒ Object
Returns transaction info for the tid
22 23 24 |
# File 'lib/straight/blockchain_adapters/blockchain_info_adapter.rb', line 22 def fetch_transaction(tid, address: nil) straighten_transaction(api_request("/rawtx/#{tid}"), address: address) end |
#fetch_transactions_for(address) ⇒ Object
Returns all transactions for the address
27 28 29 30 |
# File 'lib/straight/blockchain_adapters/blockchain_info_adapter.rb', line 27 def fetch_transactions_for(address) transactions = api_request("/rawaddr/#{address}")['txs'] transactions.map { |t| straighten_transaction(t, address: address) } end |
#latest_block(force_reload: false) ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/straight/blockchain_adapters/blockchain_info_adapter.rb', line 37 def latest_block(force_reload: false) # If we checked Blockchain.info latest block data # more than a minute ago, check again. Otherwise, use cached version. if @latest_block[:cache_timestamp].nil? || @latest_block[:cache_timestamp] < (Time.now - 60) || force_reload @latest_block = { cache_timestamp: Time.now, block: api_request("/latestblock") } else @latest_block end end |