class Notion::Api::Pagination::Cursor
Attributes
client[R]
max_retries[R]
params[R]
sleep_interval[R]
verb[R]
Public Class Methods
new(client, verb, params = {})
click to toggle source
# File lib/notion/pagination/cursor.rb, line 14 def initialize(client, verb, params = {}) @client = client @verb = verb @params = params.dup @sleep_interval = @params.delete(:sleep_interval) @max_retries = @params.delete(:max_retries) || client.default_max_retries end
Public Instance Methods
each() { |response| ... }
click to toggle source
# File lib/notion/pagination/cursor.rb, line 22 def each next_cursor = nil retry_count = 0 loop do query = next_cursor.nil? ? params : params.merge(start_cursor: next_cursor) begin response = client.send(verb, query) rescue Notion::Api::Errors::TooManyRequests => e raise e if retry_count >= max_retries client.logger.debug("#{self.class}##{__method__}") { e.to_s } retry_count += 1 sleep(e.retry_after) next end yield response break unless response.has_more next_cursor = response.next_cursor break if next_cursor.nil? || next_cursor == '' retry_count = 0 sleep(sleep_interval) if sleep_interval end end