Files
sure/app/models/binance_account/security_resolver.rb
Louis 455c74dcfa Add Binance support, heavily inspired by the Coinbase one (#1317)
* feat: add Binance support (Items, Accounts, Importers, Processor, and Sync)

* refactor: deduplicate 'stablecoins' constant and push stale_rate filter to SQL

---------

Signed-off-by: Juan José Mata <juanjo.mata@gmail.com>
Co-authored-by: Juan José Mata <juanjo.mata@gmail.com>
2026-04-07 14:43:17 +02:00

24 lines
920 B
Ruby

# frozen_string_literal: true
# Resolves or creates a Security for a given Binance ticker.
# First attempts Security::Resolver; on failure, falls back to find_or_initialize_by
# and saves an offline security so syncs are not blocked by provider outages.
class BinanceAccount::SecurityResolver
EXCHANGE_MIC = "XBNC"
def self.resolve(ticker, symbol)
result = Security::Resolver.new(ticker).resolve
if result.nil?
Rails.logger.debug "BinanceAccount::SecurityResolver - primary resolver returned nil for #{ticker}"
end
result
rescue StandardError => e
Rails.logger.warn "BinanceAccount::SecurityResolver - resolver failed for #{ticker}: #{e.message}"
Security.find_or_initialize_by(ticker: ticker, exchange_operating_mic: EXCHANGE_MIC).tap do |sec|
sec.name = symbol if sec.name.blank?
sec.offline = true unless sec.offline
sec.save! if sec.changed?
end
end
end