class MercadoBitcoin::BaseApiCall
Attributes
coin[RW]
parsed[RW]
parser[RW]
parser_error_class[RW]
response[R]
rest_client[RW]
Public Class Methods
new(coin = :bitcoin, opts = {})
click to toggle source
# File lib/mercado_bitcoin/base_api_call.rb, line 4 def initialize(coin = :bitcoin, opts = {}) @coin = coin.to_s.downcase.to_sym raise MercadoBitcoin::CoinTypeError.new("bitcoin or litecoin expected #{coin} received") unless valid_coin? @parser = opts[:parser] || JSON @rest_client = opts[:rest_client] || RestClient @parser_error_class = opts[:parser_error_class] || JSON::ParserError end
Public Instance Methods
action()
click to toggle source
# File lib/mercado_bitcoin/base_api_call.rb, line 25 def action '' end
base_url()
click to toggle source
# File lib/mercado_bitcoin/base_api_call.rb, line 29 def base_url @base_url ||= "https://www.mercadobitcoin.net/api".freeze end
bitcoin?()
click to toggle source
# File lib/mercado_bitcoin/base_api_call.rb, line 33 def bitcoin? coin == :bitcoin end
fetch()
click to toggle source
# File lib/mercado_bitcoin/base_api_call.rb, line 16 def fetch @parsed = parse(get(url)) model.new(parsed) end
get(url)
click to toggle source
# File lib/mercado_bitcoin/base_api_call.rb, line 55 def get(url) @response = rest_client.get(url) end
litecoin?()
click to toggle source
# File lib/mercado_bitcoin/base_api_call.rb, line 37 def litecoin? coin == :litecoin end
model()
click to toggle source
# File lib/mercado_bitcoin/base_api_call.rb, line 21 def model raise NotImplementedError.new end
params()
click to toggle source
# File lib/mercado_bitcoin/base_api_call.rb, line 41 def params {} end
parse(body)
click to toggle source
# File lib/mercado_bitcoin/base_api_call.rb, line 59 def parse(body) parser.parse(body) rescue parser_error_class raise MercadoBitcoin::ParserError.new("#{url} responded an invalid json data") end
url()
click to toggle source
# File lib/mercado_bitcoin/base_api_call.rb, line 45 def url return @url if @url ac = action.is_a?(String) && action != '' ? File.join(base_url, action) : base_url @url = URI.parse(ac) @url.query = URI.encode_www_form(params) if !params.nil? && !params.empty? @url = @url.to_s end
valid_coin?()
click to toggle source
# File lib/mercado_bitcoin/base_api_call.rb, line 12 def valid_coin? bitcoin? || litecoin? end