Class: Orb::Internal::Page
- Inherits:
-
Object
- Object
- Orb::Internal::Page
show all
- Includes:
- Type::BasePage
- Defined in:
- lib/orb/internal/page.rb
Overview
Defined Under Namespace
Classes: PaginationMetadata
Instance Attribute Summary collapse
Instance Method Summary
collapse
#to_enum
Constructor Details
#initialize(client:, req:, headers:, page_data:) ⇒ Page
This method is part of a private API.
You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns a new instance of Page.
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
# File 'lib/orb/internal/page.rb', line 65
def initialize(client:, req:, headers:, page_data:)
super
case page_data
in {data: Array => data}
@data = data.map { Orb::Internal::Type::Converter.coerce(@model, _1) }
else
end
case page_data
in {pagination_metadata: Hash | nil => }
=
Orb::Internal::Type::Converter.coerce(
Orb::Internal::Page::,
)
else
end
end
|
Instance Attribute Details
#data ⇒ Array<generic<Elem>>?
20
21
22
|
# File 'lib/orb/internal/page.rb', line 20
def data
@data
end
|
23
24
25
|
# File 'lib/orb/internal/page.rb', line 23
def
end
|
Instance Method Details
#auto_paging_each(&blk) {|| ... } ⇒ Object
45
46
47
48
49
50
51
52
53
54
55
56
57
|
# File 'lib/orb/internal/page.rb', line 45
def auto_paging_each(&blk)
unless block_given?
raise ArgumentError.new("A block must be given to ##{__method__}")
end
page = self
loop do
page.data&.each(&blk)
break unless page.next_page?
page = page.next_page
end
end
|
#inspect ⇒ String
This method is part of a private API.
You should avoid using this method if possible, as it may be removed or be changed in the future.
87
88
89
90
91
|
# File 'lib/orb/internal/page.rb', line 87
def inspect
model = Orb::Internal::Type::Converter.inspect(@model, depth: 1)
"#<#{self.class}[#{model}]:0x#{object_id.to_s(16)}>"
end
|
#next_page ⇒ self
32
33
34
35
36
37
38
39
40
|
# File 'lib/orb/internal/page.rb', line 32
def next_page
unless next_page?
message = "No more pages available. Please check #next_page? before calling ##{__method__}"
raise RuntimeError.new(message)
end
req = Orb::Internal::Util.deep_merge(@req, {query: {cursor: &.next_cursor}})
@client.request(req)
end
|
#next_page? ⇒ Boolean
26
27
28
|
# File 'lib/orb/internal/page.rb', line 26
def next_page?
!data.to_a.empty? && !&.next_cursor.to_s.empty?
end
|