Class: Money::Helpers::Controls::Validator
- Inherits:
-
Object
- Object
- Money::Helpers::Controls::Validator
- Defined in:
- lib/money/resources/helpers/controls/validator.rb
Constant Summary collapse
- EXCHANGES =
['Binance', 'CoinEx', 'Coinbase Exchange', 'Bitfinex', 'Bittrex', 'Gemini', 'Bybit', 'Crypto.com Exchange', 'KuCoin', 'BitMart', 'MEXC', 'Houbi'].freeze
- LIQUIDITY =
200- LR =
20- MINUTES =
15- HR =
30
Instance Method Summary collapse
- #exist ⇒ Object
-
#gain ⇒ Object
rubocop: disable Metrics/MethodLength, Lint/MissingCopEnableDirective.
-
#initialize(data:) ⇒ Validator
constructor
A new instance of Validator.
- #junior ⇒ Object
- #liquidity ⇒ Object
- #pairs ⇒ Object
- #positive ⇒ Object
- #positive_day?(item) ⇒ Boolean
- #positive_hour?(item) ⇒ Boolean
Constructor Details
#initialize(data:) ⇒ Validator
Returns a new instance of Validator.
15 16 17 18 |
# File 'lib/money/resources/helpers/controls/validator.rb', line 15 def initialize(data:) @data = data @log = Beacon::Service.instance end |
Instance Method Details
#exist ⇒ Object
46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/money/resources/helpers/controls/validator.rb', line 46 def exist cryptos = [] @data&.map do |item| request = Money::Helpers::RequestApp.new.operation_exist(item) @log.info("item: #{item[:name]} ,exist: #{request[:response]['exist']}") next if request[:response]['exist'] == true cryptos << item end&.compact cryptos end |
#gain ⇒ Object
rubocop: disable Metrics/MethodLength, Lint/MissingCopEnableDirective
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/money/resources/helpers/controls/validator.rb', line 21 def gain cryptos = [] @data&.map do |item| exchanges = item[:exchanges] @gainer = Money::Helpers::Controls::Gain.new(exchanges) potential = @gainer.greater_difference next if potential[:gain] == false item[:exchanges] = potential.dig(:payload, :exchanges) item.each { |i| i.delete(:price) } cryptos << item end&.compact cryptos end |
#junior ⇒ Object
79 80 81 82 83 |
# File 'lib/money/resources/helpers/controls/validator.rb', line 79 def junior timezone = Money.configuration partial = @data&.dig('data', 'body', 'data') partial&.reject! { |c| convert_local_time(date: c['date_added'], timezone: timezone) > difference_time } end |
#liquidity ⇒ Object
39 40 41 42 43 44 |
# File 'lib/money/resources/helpers/controls/validator.rb', line 39 def liquidity @data&.reject do |es| es[:exchanges].reject! { |exchange| exchange[:liquidity] < LIQUIDITY } es[:exchanges].empty? end end |
#pairs ⇒ Object
59 60 61 62 63 64 |
# File 'lib/money/resources/helpers/controls/validator.rb', line 59 def pairs @data&.map do |item| filtered = item[:exchanges].select { |cmc_item| EXCHANGES.include?(cmc_item[:exchange]) } item.merge(exchanges: filtered) unless filtered.empty? end&.compact end |
#positive ⇒ Object
66 67 68 69 |
# File 'lib/money/resources/helpers/controls/validator.rb', line 66 def positive quotes = @data&.dig('data', 'body', 'data') quotes&.select! { |item| (positive_hour?(item) && positive_day?(item)) } end |
#positive_day?(item) ⇒ Boolean
75 76 77 |
# File 'lib/money/resources/helpers/controls/validator.rb', line 75 def positive_day?(item) item&.dig('quote', 'USD', 'percent_change_24h')&.between?(LR, HR) end |
#positive_hour?(item) ⇒ Boolean
71 72 73 |
# File 'lib/money/resources/helpers/controls/validator.rb', line 71 def positive_hour?(item) item&.dig('quote', 'USD', 'percent_change_1h')&.positive? end |