class Cryptoexchange::Services::Market
Public Class Methods
supports_individual_ticker_query?()
click to toggle source
# File lib/cryptoexchange/services/market.rb, line 5 def supports_individual_ticker_query? fail "Must define supports_individual_ticker_query? as true or false" end
Public Instance Methods
fetch(endpoint)
click to toggle source
# File lib/cryptoexchange/services/market.rb, line 10 def fetch(endpoint) LruTtlCache.ticker_cache.getset(endpoint) do begin response = http_get(endpoint) if response.code == 200 response.parse :json elsif response.code == 400 raise Cryptoexchange::HttpBadRequestError, { response: response } else raise Cryptoexchange::HttpResponseError, { response: response } end rescue HTTP::ConnectionError => e raise Cryptoexchange::HttpConnectionError, { error: e, response: response } rescue HTTP::TimeoutError => e raise Cryptoexchange::HttpTimeoutError, { error: e, response: response } rescue JSON::ParserError => e raise Cryptoexchange::JsonParseError, { error: e, response: response } rescue TypeError => e raise Cryptoexchange::TypeFormatError, { error: e, response: response } end end end
fetch_using_post(endpoint, params, headers = false)
click to toggle source
# File lib/cryptoexchange/services/market.rb, line 33 def fetch_using_post(endpoint, params, headers = false) LruTtlCache.ticker_cache.getset([endpoint, params]) do response = if headers http_post_with_headers(endpoint, params, headers) else http_post(endpoint, params) end JSON.parse(response.to_s) end end
Private Instance Methods
http_get(endpoint)
click to toggle source
# File lib/cryptoexchange/services/market.rb, line 47 def http_get(endpoint) HTTP.timeout(:write => 2, :connect => 15, :read => 18).follow.get(endpoint) end
http_post(endpoint, params)
click to toggle source
# File lib/cryptoexchange/services/market.rb, line 51 def http_post(endpoint, params) HTTP.timeout(:write => 2, :connect => 5, :read => 8).post(endpoint, :json => params) end
http_post_with_headers(endpoint, params, headers)
click to toggle source
# File lib/cryptoexchange/services/market.rb, line 55 def http_post_with_headers(endpoint, params, headers) HTTP.timeout(:write => 2, :connect => 5, :read => 8).headers(headers).post(endpoint, :body => params) end