Class: GitlabRuby::PaginatedResponse

Inherits:
Object
  • Object
show all
Defined in:
lib/gitlab_ruby/paginated_response.rb

Instance Method Summary collapse

Constructor Details

#initialize(params = {}) ⇒ PaginatedResponse

Returns a new instance of PaginatedResponse.



5
6
7
8
9
# File 'lib/gitlab_ruby/paginated_response.rb', line 5

def initialize(params = {})
  @client = params[:client]
  @array = params[:array]
  @page_links = parse_page_links_from(params[:headers])
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(name, *args, &block) ⇒ Object



49
50
51
52
53
54
55
# File 'lib/gitlab_ruby/paginated_response.rb', line 49

def method_missing(name, *args, &block)
  if @array.respond_to?(name)
    @array.send(name, *args, &block)
  else
    super
  end
end

Instance Method Details

#==(other) ⇒ Object

Treat this like an Array (START)



41
42
43
# File 'lib/gitlab_ruby/paginated_response.rb', line 41

def ==(other)
  @array == other
end

#first_pageObject



35
36
37
# File 'lib/gitlab_ruby/paginated_response.rb', line 35

def first_page
  fetch(@page_links['first'][:href])
end

#inspectObject



45
46
47
# File 'lib/gitlab_ruby/paginated_response.rb', line 45

def inspect
  @array.inspect
end

#last_pageObject



31
32
33
# File 'lib/gitlab_ruby/paginated_response.rb', line 31

def last_page
  fetch(@page_links['last'][:href])
end

#next_pageObject



21
22
23
24
# File 'lib/gitlab_ruby/paginated_response.rb', line 21

def next_page
  return nil unless next_page?
  fetch(@page_links['next'][:href])
end

#next_page?Boolean

Returns:

  • (Boolean)


11
12
13
14
# File 'lib/gitlab_ruby/paginated_response.rb', line 11

def next_page?
  return nil unless @page_links['next']
  true
end

#prev_pageObject



26
27
28
29
# File 'lib/gitlab_ruby/paginated_response.rb', line 26

def prev_page
  return nil unless prev_page?
  fetch(@page_links['prev'][:href])
end

#prev_page?Boolean

Returns:

  • (Boolean)


16
17
18
19
# File 'lib/gitlab_ruby/paginated_response.rb', line 16

def prev_page?
  return nil unless @page_links['prev']
  true
end

#respond_to_missing?(method_name, include_private = false) ⇒ Boolean

Returns:

  • (Boolean)


57
58
59
# File 'lib/gitlab_ruby/paginated_response.rb', line 57

def respond_to_missing?(method_name, include_private = false)
  super || @array.respond_to?(method_name, include_private)
end