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.
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 |