Skip to content

Commit 4eeb7c8

Browse files
committed
Fix: pagination confusion.
1 parent 6189b6b commit 4eeb7c8

File tree

8 files changed

+960
-865
lines changed

8 files changed

+960
-865
lines changed

lib/strava/api/client.rb

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -72,11 +72,18 @@ def paginate(path, options, model, &block)
7272
#
7373
def paginate_with_cursor(path, options, model)
7474
# avoid retrieving unnecessary items
75-
options = options.merge(per_page: options[:limit]) if options.key?(:per_page) && options.key(:limit) && options[:per_page] > options[:limit]
76-
options = options.merge(page_size: options[:limit]) if options.key?(:page_size) && options.key(:limit) && options[:page_size] > options[:limit]
75+
if options.key?(:limit)
76+
if options.key?(:per_page) && options[:per_page] > options[:limit]
77+
options = options.merge(per_page: options[:limit])
78+
elsif options.key?(:page_size) && options[:page_size] > options[:limit]
79+
options = options.merge(page_size: options[:limit])
80+
end
81+
end
82+
7783
collection = []
7884
web_response = nil
79-
if block_given? || options.key?(:page_size) || options.key(:per_page)
85+
86+
if block_given? || options.key?(:page_size) || options.key?(:per_page)
8087
Cursor.new(self, path, options).each do |page|
8188
web_response = page # response of the last request made
8289
page.each do |row|
@@ -86,6 +93,7 @@ def paginate_with_cursor(path, options, model)
8693
yield m if block_given?
8794
collection << m
8895
end
96+
break if options.key?(:limit) && collection.size >= options[:limit]
8997
end
9098
else
9199
page_options = if options.key?(:limit)

spec/fixtures/strava/client/activity_comments_page_size_3_by_2.yml

Lines changed: 25 additions & 25 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

spec/fixtures/strava/client/activity_comments_per_page_3_by_2.yml

Lines changed: 10 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)