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