module Dhis2::Api::Listable::ClassMethods

Constants

PAGER_KEY

Public Instance Methods

fetch_paginated_data(client, params = {}, options = {}) click to toggle source
# File lib/dhis2/api/listable.rb, line 33
def fetch_paginated_data(client, params = {}, options = {})
  raise InvalidMethodError, "this collection is not paginated" unless paginated
  options = { raw: false, with_pager: false }.merge(options)
  Enumerator.new do |yielder|
    params[:page] ||= 1
    loop do
      results = list(client, params, options[:raw])
      if options[:with_pager]
        results.map { |item| yielder << [item, results.pager] }
      else
        results.map { |item| yielder << item }
      end
      raise StopIteration if results.pager.last_page?
      params[:page] += 1
    end
  end
end
list(client, options = {}, raw = false) click to toggle source
# File lib/dhis2/api/listable.rb, line 14
def list(client, options = {}, raw = false)
  json_response = client.get(path: resource_name, query_params: format_query_parameters(options), raw: raw)
  if paginated
    if raw
      PaginatedArray.new(
        json_response[resource_name],
        json_response[PAGER_KEY]
      )
    else
      PaginatedArray.new(
        json_response[resource_key].map { |raw_resource| new(client, raw_resource) },
        json_response[PAGER_KEY]
      )
    end
  else
    json_response
  end
end
paginated() click to toggle source
# File lib/dhis2/api/listable.rb, line 51
def paginated
  true
end

Private Instance Methods

additional_query_parameters() click to toggle source
# File lib/dhis2/api/listable.rb, line 68
def additional_query_parameters
  []
end
default_query_parameters() click to toggle source
# File lib/dhis2/api/listable.rb, line 72
def default_query_parameters
  [:page, :page_size, :root_junction]
end
format_query_parameters(options) click to toggle source
# File lib/dhis2/api/listable.rb, line 57
def format_query_parameters(options)
  ::Dhis2::QueryParametersFormatter.new(
    options:          options,
    query_parameters: query_parameters
  ).call
end
query_parameters() click to toggle source
# File lib/dhis2/api/listable.rb, line 64
def query_parameters
  default_query_parameters + additional_query_parameters
end