class Avalon::Btcguild

Extracts Btcguild pool info

Constants

API_PATH
API_URL

Public Class Methods

new(monitor, ping_url, api_key) click to toggle source
Calls superclass method
# File lib/avalon/btcguild.rb, line 12
def initialize monitor, ping_url, api_key
  @ping_url, @api_key = ping_url, api_key

  @conn ||= Faraday.new(:url => API_URL) do |faraday|
    # faraday.response :logger                  # log requests to STDOUT
    faraday.adapter  Faraday.default_adapter  # make requests with Net::HTTP
  end

  super()
end

Public Instance Methods

access(key1, key2, precision=nil, divider=1) click to toggle source

Convenience data accessors

# File lib/avalon/btcguild.rb, line 60
def access key1, key2, precision=nil, divider=1
  if @data[key1] && @data[key1][key2]
    if precision
      (@data[key1][key2]/divider).round(precision)
    else
      (@data[key1][key2]/divider)
    end
  end
end
diff() click to toggle source
# File lib/avalon/btcguild.rb, line 90
def diff
  access :pool, :difficulty, 1, 1000_000.0
end
get() click to toggle source
# File lib/avalon/btcguild.rb, line 23
def get
  reply = @conn.get "#{API_PATH}#{@api_key}"
  if reply.success? && !(reply.body =~ /too many API requests/)
    JSON.parse(reply.body, :symbolize_names => true)
  else
   {} 
  end
rescue Faraday::Error::TimeoutError
  {}
end
past24() click to toggle source
# File lib/avalon/btcguild.rb, line 70
def past24
  access :user, :past_24h_rewards, 2
end
past24_nmc() click to toggle source
# File lib/avalon/btcguild.rb, line 78
def past24_nmc
  access :user, :past_24h_rewards_nmc, 1
end
poll(verbose=true) click to toggle source
# File lib/avalon/btcguild.rb, line 34
def poll verbose=true
  @data[:ping] = ping @ping_url

  if @data[:ping]
    @data.merge!(get || {})
    if @data[:workers] && @data[:workers].keys.include?(:'1')
      @data[:workers] = Hash[*@data[:workers].map {|_, h| [h.delete(:worker_name), h]}.flatten]
    end
  end
  puts "#{self}" if verbose
end
pool_speed() click to toggle source
# File lib/avalon/btcguild.rb, line 86
def pool_speed
  access :pool, :pool_speed, 1, 1000.0
end
report() click to toggle source

Check for any exceptional situations, sound alarm if any

# File lib/avalon/btcguild.rb, line 47
def report
  if self[:ping].nil?
    alarm "BTC Guild not responding to ping"
  else
  end
end
to_s() click to toggle source
# File lib/avalon/btcguild.rb, line 54
def to_s
  "\nBTC Guild: #{pool_speed}TH/s ping:#{self[:ping]} diff:#{diff}M " +
    "unpaid(24h) btc: #{unpaid}(#{past24}) nmc: #{unpaid_nmc}(#{past24_nmc})"
    end
unpaid() click to toggle source
# File lib/avalon/btcguild.rb, line 74
def unpaid
  access :user, :unpaid_rewards, 3
end
unpaid_nmc() click to toggle source
# File lib/avalon/btcguild.rb, line 82
def unpaid_nmc
  access :user, :unpaid_rewards_nmc, 2
end