class Honeybadger::Api::Paginator

Attributes

current_page[R]
pages[R]

Public Class Methods

new(path, filters, handler) click to toggle source
# File lib/honeybadger-api/paginator.rb, line 7
def initialize(path, filters, handler)
  @path = path
  @filters = filters
  @handler = handler

  @pages = {}

  @current_page = 1

  response = Honeybadger::Api.client.get(@path, @filters)

  @next_page_link = response[:links][:next]
  @prev_page_link = response[:links][:prev]

  @pages[current_page] = response[:results].map do |r|
    @handler.call(r)
  end
end

Public Instance Methods

collection() click to toggle source
# File lib/honeybadger-api/paginator.rb, line 78
def collection
  @pages.values.flatten
end
next() click to toggle source
# File lib/honeybadger-api/paginator.rb, line 34
def next
  if next?
    encoded_query = URI.parse(@next_page_link).query
    decoded_query = URI.decode_www_form(encoded_query)
    next_page_filters = decoded_query.inject({}){ |h,(k,v)| h[k.to_sym] = v; h }

    response = Honeybadger::Api.client.get(@path, @filters.merge(next_page_filters))

    @current_page = current_page + 1
    @next_page_link = response[:links][:next]
    @prev_page_link = response[:links][:prev]

    @pages[current_page] = response[:results].map do |r|
      @handler.call(r)
    end

    @pages[current_page]
  else
    nil
  end
end
next?() click to toggle source
# File lib/honeybadger-api/paginator.rb, line 26
def next?
  !@next_page_link.nil?
end
previous() click to toggle source
# File lib/honeybadger-api/paginator.rb, line 56
def previous
  if previous?
    encoded_query = URI.parse(@prev_page_link).query
    decoded_query = URI.decode_www_form(encoded_query)
    prev_page_filters = decoded_query.inject({}){ |h,(k,v)| h[k.to_sym] = v; h }

    response = Honeybadger::Api.client.get(@path, @filters.merge(prev_page_filters))

    @current_page = current_page - 1
    @next_page_link = response[:links][:next]
    @prev_page_link = response[:links][:prev]

    @pages[current_page] = response[:results].map do |r|
      @handler.call(r)
    end

    @pages[current_page]
  else
    nil
  end
end
previous?() click to toggle source
# File lib/honeybadger-api/paginator.rb, line 30
def previous?
  !@prev_page_link.nil?
end