module Barometer module Query module Converter class FromCoordinatesToNoaaStationId def self.from [:coordinates] end def initialize(query) @query = query end def call return unless can_convert? station_id = Service::NoaaStation.fetch(@query) @query.add_conversion(:noaa_station_id, station_id) end private def can_convert? !!@query.get_conversion(*self.class.from) end end end end end Barometer::Query::Converter.register(:coordinates, Barometer::Query::Converter::FromCoordinatesToNoaaStationId)