class Grape::Formatter::Paginater::PageLinks

Constants

Attributes

first[RW]
last[RW]
next[RW]
prev[RW]

Public Class Methods

new(response_headers) click to toggle source

let(:header) { {“Link” => “<api.com/users?page=4&size=20>; rel="next", <…>; rel="last", <…>; rel="first", <…>; rel="prev"”}

# File lib/paginater/page/page_links.rb, line 20
def initialize(response_headers)
  link_header = response_headers[HEADER_LINK]
  if link_header
    return unless link_header =~ /(next|first|last|prev)/

    link_header.split(DELIM_LINKS).each do |link|
      if link.strip =~ /<([^>]+)>; rel=\"([^\"]+)\"/
        url_part, meta_part = $1, $2
        next if !url_part || !meta_part
        case meta_part
        when META_FIRST
          self.first = url_part
        when META_LAST
          self.last = url_part
        when META_NEXT
          self.next = url_part
        when META_PREV
          self.prev = url_part
        end
      end
    end
  else
    # When on the first page
    self.next = response_headers[HEADER_NEXT]
    self.last = response_headers[HEADER_LAST]
  end
end