Method: GoogleDrive::Session#execute_paged!

Defined in:
lib/google_drive/session.rb

#execute_paged!(opts, &block) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

API:

  • private



437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
# File 'lib/google_drive/session.rb', line 437

def execute_paged!(opts, &block)
  if block
    page_token = nil
    loop do
      parameters          = (opts[:parameters] || {}).merge({page_token: page_token})
      (items, page_token) = execute_paged!(opts.merge(parameters: parameters))
      items.each(&block)
      break unless page_token
    end

  elsif opts[:parameters] && opts[:parameters].key?(:page_token)
    response = opts[:method].call(opts[:parameters])
    items    = response.__send__(opts[:items_method_name]).map do |item|
      opts[:converter] ? opts[:converter].call(item) : item
    end
    return [items, response.next_page_token]

  else
    parameters = (opts[:parameters] || {}).merge({page_token: nil})
    (items, _) = execute_paged!(opts.merge(parameters: parameters))
    items
  end
end