Class: Middlecoin::Core::MiddlecoinAPI
- Inherits:
-
Object
- Object
- Middlecoin::Core::MiddlecoinAPI
- Defined in:
- lib/middlecoin/core/middlecoinapi.rb
Overview
Bitcoin Address
Instance Attribute Summary collapse
-
#report ⇒ Object
Returns the value of attribute report.
Instance Method Summary collapse
-
#fetch(uri_str, limit = 10) ⇒ Object
Simple function for following redirects, found it on stackexchange.
-
#fetch_report ⇒ Object
Downloads and caches the report JSON from middlecoin.com.
-
#lookup(btc_address) ⇒ Object
Looks up a specific btc address in the JSON report from middlecoin.com.
Instance Attribute Details
#report ⇒ Object
Returns the value of attribute report.
31 32 33 |
# File 'lib/middlecoin/core/middlecoinapi.rb', line 31 def report @report end |
Instance Method Details
#fetch(uri_str, limit = 10) ⇒ Object
Simple function for following redirects, found it on stackexchange
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/middlecoin/core/middlecoinapi.rb', line 34 def fetch(uri_str, limit = 10) raise ArgumentError, 'HTTP redirect too deep' if limit == 0 url = URI.parse(uri_str) req = Net::HTTP::Get.new(url.path, { 'User-Agent' => "Agent" }) response = Net::HTTP.start(url.host, url.port) do |http| http.request(req) end case response when Net::HTTPSuccess then response when Net::HTTPRedirection then fetch(response['location'], limit - 1) else response.error! end end |
#fetch_report ⇒ Object
Downloads and caches the report JSON from middlecoin.com
55 56 57 58 59 60 61 62 |
# File 'lib/middlecoin/core/middlecoinapi.rb', line 55 def fetch_report begin report = fetch("#{Middlecoin::MIDDLECOIN_URL}/json") @report = JSON.parse(report.body)["report"] rescue => e raise Middlecoin::MiddlecoinAPIError, "Unable to collect JSON report from middlecoin.com" end end |
#lookup(btc_address) ⇒ Object
Looks up a specific btc address in the JSON report from middlecoin.com
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
# File 'lib/middlecoin/core/middlecoinapi.rb', line 66 def lookup btc_address @report.each do |address| if address[0].eql?(btc_address) result = { :address => address[0], :lastHourShares => address[1]["lastHourShares"], :immatureBalance => address[1]["immatureBalance"], :lastHourRejectedShares => address[1]["lastHourRejectedShares"], :paidOut => address[1]["paidOut"], :unexchangedBalance => address[1]["unexchangedBalance"], :megahashesPerSecond => address[1]["megahashesPerSecond"], :bitcoinBalance => address[1]["bitcoinBalance"], :rejectedMegahashesPerSecond => address[1]["rejectedMegahashesPerSecond"] } return result end end return nil end |