class Dhis2::QueryParametersFormatter

Attributes

options[R]
query_parameters[R]

Public Class Methods

new(options:, query_parameters:) click to toggle source
# File lib/dhis2/api/query_parameters_formatter.rb, line 5
def initialize(options:, query_parameters:)
  @options = options
  @query_parameters = query_parameters
end

Public Instance Methods

call() click to toggle source
# File lib/dhis2/api/query_parameters_formatter.rb, line 10
def call
  RestClient::ParamsArray.new(formatted_options)
end

Private Instance Methods

format_fields(fields) click to toggle source
# File lib/dhis2/api/query_parameters_formatter.rb, line 30
def format_fields(fields)
  if fields.respond_to?(:join)
    fields.join(",")
  elsif fields == :all
    ":all"
  else
    fields
  end
end
format_filter(filter) click to toggle source
# File lib/dhis2/api/query_parameters_formatter.rb, line 40
def format_filter(filter)
  if filter.respond_to?(:map)
    filter.map do |subfilter|
      [:filter, subfilter]
    end
  else
    [[:filter, filter]]
  end
end
formatted_options() click to toggle source
# File lib/dhis2/api/query_parameters_formatter.rb, line 18
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