frankfurter/lib/versions/v1/query.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

51 lines
1 KiB
Ruby

# frozen_string_literal: true
require "roda"
module Versions
class V1 < Roda
class Query
class << self
def build(params)
query = new(params).to_h
raise ArgumentError, "bad currency pair" if [query[:base]] == query[:symbols]
query
end
end
def initialize(params = {})
@params = params
end
def amount
return unless @params[:amount]
value = @params[:amount].to_f
raise ArgumentError, "invalid amount" unless value.positive?
value
end
def base
@params.values_at(:from, :base).compact.first&.upcase
end
def symbols
@params.values_at(:to, :symbols).compact.first&.upcase&.split(",")
end
def date
if @params[:date]
Date.parse(@params[:date])
else
(Date.parse(@params[:start_date])..Date.parse(@params[:end_date]))
end
end
def to_h
{ amount:, base:, date:, symbols: }.compact
end
end
end
end