Class: Strava::Api::Cursor

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/strava/api/cursor.rb

Overview

Handles paginated iteration through API endpoints.

This class provides an Enumerable interface for iterating through paginated API responses. It supports both traditional page-based pagination and cursor-based pagination.

Examples:

Iterating through pages

cursor = Strava::Api::Cursor.new(client, 'athlete/activities', per_page: 30)
cursor.each do |page|
  page.each do |activity|
    puts activity.name
  end
end

See Also:

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(client, path, params = {}) ⇒ Cursor

Initialize a new Cursor for paginated iteration.

Parameters:

  • client (Strava::Api::Client)

    API client to use for requests

  • path (String)

    API endpoint path to paginate

  • params (Hash) (defaults to: {})

    Query parameters (excluding :limit which is removed)



41
42
43
44
45
# File 'lib/strava/api/cursor.rb', line 41

def initialize(client, path, params = {})
  @client = client
  @path = path
  @params = params.key?(:limit) ? params.dup.tap { |p| p.delete :limit } : params
end

Instance Attribute Details

#clientStrava::Api::Client (readonly)

Returns API client instance.

Returns:



26
27
28
# File 'lib/strava/api/cursor.rb', line 26

def client
  @client
end

#paramsHash (readonly)

Returns Query parameters for the request.

Returns:

  • (Hash)

    Query parameters for the request



32
33
34
# File 'lib/strava/api/cursor.rb', line 32

def params
  @params
end

#pathString (readonly)

Returns API endpoint path.

Returns:

  • (String)

    API endpoint path



29
30
31
# File 'lib/strava/api/cursor.rb', line 29

def path
  @path
end

Instance Method Details

#each(&block) ⇒ Object



47
48
49
# File 'lib/strava/api/cursor.rb', line 47

def each(&block)
  params[:page_size] ? each_cursor(&block) : each_page(&block)
end