frankfurter/lib/versions/v1/currency_names.rb

44 lines
875 B
Ruby
Raw Normal View History

2026-05-21 01:38:14 -06:00
# 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