class Cryptoexchange::Services::Pairs
Constants
- HTTP_METHOD
- MARKET
- PAIRS_URL
- POST_PARAMS
Public Instance Methods
default_override_exist?()
click to toggle source
# File lib/cryptoexchange/services/pairs.rb, line 68 def default_override_exist? File.exist? default_override_path end
default_override_path()
click to toggle source
# File lib/cryptoexchange/services/pairs.rb, line 60 def default_override_path File.join(File.dirname(__dir__), "exchanges/#{exchange_class::NAME}/#{exchange_class::NAME}.yml") end
exchange_class()
click to toggle source
# File lib/cryptoexchange/services/pairs.rb, line 72 def exchange_class exchange_name = self.class.name.split('::')[2] Object.const_get "Cryptoexchange::Exchanges::#{exchange_name}::Market" end
fetch()
click to toggle source
# File lib/cryptoexchange/services/pairs.rb, line 11 def fetch # If PAIRS_URL provided, use that to fetch market pairs return fetch_via_api if self.class::PAIRS_URL # If gem user has an overriden yaml, use that return fetch_via_override(user_override_path) if user_override_exist? # Falls back to default overriden yaml return fetch_via_override(default_override_path) if default_override_exist? end
fetch_via_api(endpoint = self.class::PAIRS_URL, params = self.class::POST_PARAMS)
click to toggle source
# File lib/cryptoexchange/services/pairs.rb, line 22 def fetch_via_api(endpoint = self.class::PAIRS_URL, params = self.class::POST_PARAMS) begin fetch_response = self.class::HTTP_METHOD == 'POST' ? http_post(endpoint, params) : http_get(endpoint) if fetch_response.code == 200 fetch_response.parse :json elsif fetch_response.code == 400 raise Cryptoexchange::HttpBadRequestError, { response: fetch_response } else raise Cryptoexchange::HttpResponseError, { response: fetch_response } end rescue HTTP::ConnectionError => e raise Cryptoexchange::HttpConnectionError, { error: e, response: fetch_response } rescue HTTP::TimeoutError => e raise Cryptoexchange::HttpTimeoutError, { error: e, response: fetch_response } rescue JSON::ParserError => e raise Cryptoexchange::JsonParseError, { error: e, response: fetch_response } rescue TypeError => e raise Cryptoexchange::TypeFormatError, { error: e, response: fetch_response } end end
fetch_via_api_using_post(endpoint = self.class::PAIRS_URL, headers = false, body = false)
click to toggle source
# File lib/cryptoexchange/services/pairs.rb, line 43 def fetch_via_api_using_post(endpoint = self.class::PAIRS_URL, headers = false, body = false) fetch_response = if headers && body HTTP.timeout(:write => 2, :connect => 5, :read => 8).headers(headers).post(endpoint, body: body) else HTTP.timeout(:write => 2, :connect => 5, :read => 8).post(endpoint) end JSON.parse(fetch_response.to_s) end
fetch_via_override(path)
click to toggle source
# File lib/cryptoexchange/services/pairs.rb, line 52 def fetch_via_override(path) YAML.load_file(path)[:pairs] end
http_get(endpoint)
click to toggle source
# File lib/cryptoexchange/services/pairs.rb, line 77 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/pairs.rb, line 81 def http_post(endpoint, params) HTTP.timeout(:write => 2, :connect => 5, :read => 8).post(endpoint, json: params) end
user_override_exist?()
click to toggle source
# File lib/cryptoexchange/services/pairs.rb, line 64 def user_override_exist? File.exist? user_override_path end
user_override_path()
click to toggle source
# File lib/cryptoexchange/services/pairs.rb, line 56 def user_override_path "config/cryptoexchange/#{exchange_class::NAME}.yml" end