lib/dhis2/api/query_parameters_formatter.rb
# frozen_string_literal: true
module Dhis2
class QueryParametersFormatter
def initialize(options:, query_parameters:)
@options = options
@query_parameters = query_parameters
end
def call
RestClient::ParamsArray.new(formatted_options)
end
private
attr_reader :options, :query_parameters
def formatted_options
[].tap do |params|
query_parameters.each do |param|
Array(options[param]).each do |value|
params.push([::Dhis2::Case.camelize(param.to_s, false), value])
end
end
params.push([:fields, format_fields(options[:fields])]) if options[:fields]
params.concat(format_filter(options[:filter])) if options[:filter]
end
end
def format_fields(fields)
if fields.respond_to?(:join)
fields.join(",")
elsif fields == :all
":all"
else
fields
end
end
def format_filter(filter)
if filter.respond_to?(:map)
filter.map do |subfilter|
[:filter, subfilter]
end
else
[[:filter, filter]]
end
end
end
end