Class: Gitlab::Headers::PageLinks

Inherits:
Object
  • Object
show all
Defined in:
lib/gitlab/headers/page_links.rb

Constant Summary collapse

'link'
','
/<([^>]+)>; rel="([^"]+)"/
METAS =
%w[last next first prev].freeze

Instance Method Summary collapse

Constructor Details

#initialize(headers) ⇒ PageLinks

Returns a new instance of PageLinks.



13
14
15
16
17
# File 'lib/gitlab/headers/page_links.rb', line 13

def initialize(headers)
  link_header = headers[HEADER_LINK]

  extract_links(link_header) if link_header && link_header =~ /(next|first|last|prev)/
end

Instance Method Details



19
20
21
22
23
24
25
26
27
28
29
# File 'lib/gitlab/headers/page_links.rb', line 19

def extract_links(header)
  header.split(DELIM_LINKS).each do |link|
    LINK_REGEX.match(link.strip) do |match|
      url = match[1]
      meta = match[2]
      next if !url || !meta || METAS.index(meta).nil?

      send("#{meta}=", url)
    end
  end
end