Sha256: 28bd7deac4f341fe604adc57558808ab9d640180b72d13a204ce35ff2e62582c
Contents?: true
Size: 948 Bytes
Versions: 12
Compression:
Stored size: 948 Bytes
Contents
# frozen_string_literal: true require_relative "../response/investors_response" module ONEAccess module Request class InvestorsRequestHandler def initialize(url:, limit: PAGE_SIZE) @url = url @limit = limit end def each offset = 0 loop do http_response = Http::HttpClient.get(url, build_params(offset)) response = Response::InvestorsResponse.from_json(http_response.body) response&.data&.each do |investor| yield investor end break unless more_records?(response.meta) offset += 1 end end private PAGE_SIZE = 100 attr_reader :url attr_reader :limit def build_params(offset) { limit: limit, offset: offset } end def more_records?(meta) meta.offset < (meta.total / meta.limit).ceil - 1 end end end end
Version data entries
12 entries across 12 versions & 1 rubygems