Sha256: 6de8c793d05bc06a9e32d442135a71d8d5751c97d1df2459a00cd6c0546f7daa

Contents?: true

Size: 1.06 KB

Versions: 1

Compression:

Stored size: 1.06 KB

Contents

require 'active_support'

class LHS::Service

  module All
    extend ActiveSupport::Concern

    module ClassMethods

      # Should be an edge case but sometimes all objects from a certain resource
      # are required. In this case we load the first page with the default max limit,
      # compute the amount of left over requests, do all the the left over requests
      # for the following pages and concatenate all the results in order to return
      # all the objects for a given resource.
      def all(params = {})
        all = []
        default_max_limit = 100
        data = instance.request(params: params.merge(limit: default_max_limit))
        all.concat(data._raw['items'])
        total_left = data._raw['total'] - data.count
        limit = data._raw['limit'] || data.count
        requests = total_left / limit
        requests.times do |i|
          offset = limit * (i+1) + 1
          all.concat instance.request(params: params.merge(limit: limit, offset: offset))._raw['items']
        end
        LHS::Data.new(all, nil, self)
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
lhs-1.2.1 lib/lhs/concerns/service/all.rb