Method: Pochette::Backends::BlockchainInfo#get_json

Defined in:
lib/pochette/backends/blockchain_info.rb

#get_json(path, params = {}) ⇒ Object



103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
# File 'lib/pochette/backends/blockchain_info.rb', line 103

def get_json(path, params={})
  params['api_code'] = api_key if api_key
  query = params.empty? ? '' : "?#{params.to_query}"
  retries = 30
  begin
    raw_response = open("https://blockchain.info/#{path}#{query}").read
    sleep cooldown
    Oj.load(raw_response)
  rescue OpenURI::HTTPError => e
    raise if retries < 0 || e.message.to_i != 429
    retries -= 1
    sleep (cooldown * 5)
    retry
  end
end