class Abot::Whitelist::BinanceCap
Constants
- DEFAULT_COINS
- FIAT
Public Class Methods
send_req(base_list:, top_number:)
click to toggle source
# File lib/abot/whitelist/binance_cap.rb, line 13 def send_req(base_list:, top_number:) self.base_uri 'https://www.binance.com' path = '/exchange-api/v2/public/asset-service/product/get-products' response = get(path) process!(response: response || '{}', base_list: base_list, top_number: top_number) end
Private Class Methods
process!(response:, base_list:, top_number:)
click to toggle source
# File lib/abot/whitelist/binance_cap.rb, line 23 def process!(response:, base_list:, top_number:) result = top(response: response, top_number: top_number).map { |m| base_list.include?(m) ? m : nil }.compact puts "base list: #{base_list}" puts "+++++++++++++++++++++++++++++++++++++++++++++" puts "coins (count = #{result.count}) from the base list in the top #{top_number} by capitalization:" puts result.join(' ') end
serialized_response(response:)
click to toggle source
# File lib/abot/whitelist/binance_cap.rb, line 44 def serialized_response(response:) begin JSON.parse(response.body, symbolize_names: true) rescue JSON::ParserError => error # binance 500 errors are html format raise Error.new(message: error) end end
top(response:, top_number:)
click to toggle source
# File lib/abot/whitelist/binance_cap.rb, line 31 def top(response:, top_number:) all_coins = usdt_coins(response: response).map { |s| [s[:b], (s[:cs].to_f * s[:c].to_f)] } .sort_by { |s| s[1] } .reverse .map { |m| m[0] } result = (all_coins - FIAT)[0..((top_number - 1) - DEFAULT_COINS.count)] result + DEFAULT_COINS end
usdt_coins(response:)
click to toggle source
# File lib/abot/whitelist/binance_cap.rb, line 40 def usdt_coins(response:) serialized_response(response: response)[:data].select { |s| s[:q] == 'USDT' } end