frankfurter/lib/versions/v1/currency_names.rb
BadMark d0a43e357a
Some checks failed
CI/CD Pipeline / test (push) Has been cancelled
CI/CD Pipeline / publish (push) Has been cancelled
CI/CD Pipeline / release (push) Has been cancelled
up
2026-05-21 01:38:14 -06:00

43 lines
875 B
Ruby

# frozen_string_literal: true
require "roda"
require "rate"
require "money/currency"
module Versions
class V1 < Roda
class CurrencyNames
def cache_key
return if currencies.empty?
Digest::MD5.hexdigest(currencies.first[:date].to_s)
end
def formatted
return {} if currencies.empty?
iso_codes.to_h do |iso_code|
[iso_code, Money::Currency.find(iso_code).name]
end
end
private
def iso_codes
currencies.map { |c| c[:quote] }.append("EUR").sort
end
def currencies
@currencies ||= find_currencies
end
def find_currencies
require "carry_forward"
today = Date.today
rows = Rate.where(provider: "ECB").where(date: (today - 14)..today).naked.all
CarryForward.apply(rows, date: today)
end
end
end
end