Class: SleeperApi::Client

Inherits:
Object
  • Object
show all
Includes:
HTTParty, Helpers
Defined in:
lib/sleeper_api/client.rb

Overview

HTTP client for Sleeper API requests.

Handles all low-level HTTP calls, caching, retries, and error handling. Use via client or create directly.

Examples:

client = SleeperApi::Client.new(config)
league = client.league("123456")
user = client.user("username")

Instance Method Summary collapse

Methods included from Helpers

#deep_symbolize_keys, #player_details

Constructor Details

#initialize(config) ⇒ Client

Returns a new instance of Client.

Parameters:



21
22
23
24
25
# File 'lib/sleeper_api/client.rb', line 21

def initialize(config)
  @config = config
  @players_cache = nil
  @cache_timestamp = nil
end

Instance Method Details

#draft(draft_id) ⇒ SleeperApi::Draft

Create a new Draft instance.

Parameters:

  • draft_id (String)

    Draft identifier

Returns:

See Also:



50
51
52
# File 'lib/sleeper_api/client.rb', line 50

def draft(draft_id)
  Draft.new(draft_id, self)
end

#get_draft(draft_id) ⇒ Hash

Fetch draft details.

Parameters:

  • draft_id (String, Integer)

    Draft ID

Returns:

  • (Hash)

    Draft metadata

See Also:



173
174
175
# File 'lib/sleeper_api/client.rb', line 173

def get_draft(draft_id)
  make_request("/draft/#{draft_id}")
end

#get_draft_picks(draft_id) ⇒ Array<Hash>

Get draft picks.

Parameters:

  • draft_id (String, Integer)

    Draft ID

Returns:

  • (Array<Hash>)

    Pick data

See Also:



182
183
184
# File 'lib/sleeper_api/client.rb', line 182

def get_draft_picks(draft_id)
  make_request("/draft/#{draft_id}/picks")
end

#get_draft_traded_picks(draft_id) ⇒ Array<Hash>

Get traded draft picks for a draft.

Parameters:

  • draft_id (String, Integer)

    Draft ID

Returns:

  • (Array<Hash>)

    Traded picks

See Also:



191
192
193
# File 'lib/sleeper_api/client.rb', line 191

def get_draft_traded_picks(draft_id)
  make_request("/draft/#{draft_id}/traded_picks")
end

#get_league(league_id) ⇒ Hash

Fetch league details.

Parameters:

  • league_id (String)

    League ID

Returns:

  • (Hash)

    League metadata

See Also:



90
91
92
# File 'lib/sleeper_api/client.rb', line 90

def get_league(league_id)
  make_request("/league/#{league_id}")
end

#get_league_drafts(league_id) ⇒ Array<Hash>

Get league drafts.

Parameters:

  • league_id (String, Integer)

    League ID

Returns:

  • (Array<Hash>)

    Draft data

See Also:



155
156
157
# File 'lib/sleeper_api/client.rb', line 155

def get_league_drafts(league_id)
  make_request("/league/#{league_id}/drafts")
end

#get_league_matchups(league_id, week) ⇒ Array<Hash>

Get matchups for a specific week.

Parameters:

  • league_id (String, Integer)

    League ID

  • week (Integer)

    Week number (1-17)

Returns:

  • (Array<Hash>)

    Matchup data

See Also:



118
119
120
# File 'lib/sleeper_api/client.rb', line 118

def get_league_matchups(league_id, week)
  make_request("/league/#{league_id}/matchups/#{week}")
end

#get_league_rosters(league_id) ⇒ Array<Hash>

Get all rosters in a league.

Parameters:

  • league_id (String)

    League ID

Returns:

  • (Array<Hash>)

    Roster data

See Also:



99
100
101
# File 'lib/sleeper_api/client.rb', line 99

def get_league_rosters(league_id)
  make_request("/league/#{league_id}/rosters")
end

#get_league_traded_picks(league_id) ⇒ Array<Hash>

Get traded draft picks for a league.

Parameters:

  • league_id (String, Integer)

    League ID

Returns:

  • (Array<Hash>)

    Traded picks

See Also:



164
165
166
# File 'lib/sleeper_api/client.rb', line 164

def get_league_traded_picks(league_id)
  make_request("/league/#{league_id}/traded_picks")
end

#get_league_users(league_id) ⇒ Array<Hash>

Get all users in a league.

Parameters:

  • league_id (String, Integer)

    League ID

Returns:

  • (Array<Hash>)

    User data

See Also:



108
109
110
# File 'lib/sleeper_api/client.rb', line 108

def get_league_users(league_id)
  make_request("/league/#{league_id}/users")
end

#get_nfl_state(sport = "nfl") ⇒ Hash

Get NFL state (week, season status).

Parameters:

  • sport (String) (defaults to: "nfl")

    Sport code (default: "nfl")

Returns:

  • (Hash)

    State data

See Also:



200
201
202
203
204
205
206
# File 'lib/sleeper_api/client.rb', line 200

def get_nfl_state(sport = "nfl")
  nfl_state = make_request("/state/#{sport}")
  nfl_state.each_with_object({}) do |(k, v), result|
    key = k.is_a?(String) ? k.to_sym : k
    result[key] = v
  end
end

#get_player_by_id(player_id, sport = "nfl") ⇒ Hash?

Get a specific player by ID.

Parameters:

  • player_id (String)

    Player ID

  • sport (String) (defaults to: "nfl")

    Sport code (default: "nfl")

Returns:

  • (Hash, nil)

    Player data or nil if not found

See Also:



241
242
243
# File 'lib/sleeper_api/client.rb', line 241

def get_player_by_id(player_id, sport = "nfl")
  get_players(sport)[player_id]
end

#get_players(sport = "nfl") ⇒ Hash{String => Hash}

Get all player data (cached for 24 hours).

Parameters:

  • sport (String) (defaults to: "nfl")

    Sport code (default: "nfl")

Returns:

  • (Hash{String => Hash})

    Player ID to player data mapping

See Also:



225
226
227
228
229
230
231
232
233
# File 'lib/sleeper_api/client.rb', line 225

def get_players(sport = "nfl")
  return @players_cache if @players_cache && @cache_timestamp && (Time.now - @cache_timestamp) < (3600 * 24)

  response = make_request("/players/#{sport}")
  @players_cache = response.parsed_response
  @cache_timestamp = Time.now

  @players_cache
end

#get_playoff_bracket(league_id) ⇒ Array<Hash>

Get playoff winners bracket.

Parameters:

  • league_id (String, Integer)

    League ID

Returns:

  • (Array<Hash>)

    Bracket matchups

See Also:



127
128
129
# File 'lib/sleeper_api/client.rb', line 127

def get_playoff_bracket(league_id)
  make_request("/league/#{league_id}/winners_bracket")
end

#get_toilet_bowl(league_id) ⇒ Array<Hash>

Get toilet bowl (losers bracket).

Parameters:

  • league_id (String, Integer)

    League ID

Returns:

  • (Array<Hash>)

    Bracket matchups

See Also:



136
137
138
# File 'lib/sleeper_api/client.rb', line 136

def get_toilet_bowl(league_id)
  make_request("/league/#{league_id}/losers_bracket")
end

#get_transactions(league_id, week) ⇒ Array<Hash>

Get transactions for a specific week.

Parameters:

  • league_id (String, Integer)

    League ID

  • week (Integer)

    Week number

Returns:

  • (Array<Hash>)

    Transaction data

See Also:



146
147
148
# File 'lib/sleeper_api/client.rb', line 146

def get_transactions(league_id, week)
  make_request("/league/#{league_id}/transactions/#{week}")
end

#get_user(identifier) ⇒ Hash

Fetch user data by identifier.

Parameters:

  • identifier (String)

    Username or user ID

Returns:

  • (Hash)

    Raw user data

See Also:



59
60
61
# File 'lib/sleeper_api/client.rb', line 59

def get_user(identifier)
  make_request("/user/#{identifier}")
end

#get_user_drafts(user_id, sport: "nfl", season: Time.now.year) ⇒ Array<Hash>

Get drafts for a user in a specific season.

Parameters:

  • user_id (String)

    User ID

  • sport (String) (defaults to: "nfl")

    Sport code (default: "nfl")

  • season (Integer) (defaults to: Time.now.year)

    Season year (default: current year)

Returns:

  • (Array<Hash>)

    Draft data

See Also:



81
82
83
# File 'lib/sleeper_api/client.rb', line 81

def get_user_drafts(user_id, sport: "nfl", season: Time.now.year)
  make_request("/user/#{user_id}/drafts/#{sport}/#{season}")
end

#get_user_leagues(user_id, sport: "nfl", season: Time.now.year) ⇒ Array<Hash>

Get leagues for a user in a specific season.

Parameters:

  • user_id (String)

    User ID

  • sport (String) (defaults to: "nfl")

    Sport code (default: "nfl")

  • season (Integer) (defaults to: Time.now.year)

    Season year (default: current year)

Returns:

  • (Array<Hash>)

    League data

See Also:



70
71
72
# File 'lib/sleeper_api/client.rb', line 70

def get_user_leagues(user_id, sport: "nfl", season: Time.now.year)
  make_request("/user/#{user_id}/leagues/#{sport}/#{season}")
end

#league(league_id) ⇒ SleeperApi::League

Create a new League instance.

Parameters:

  • league_id (String)

    League identifier

Returns:

See Also:



32
33
34
# File 'lib/sleeper_api/client.rb', line 32

def league(league_id)
  League.new(league_id, self)
end

Get trending players.

Parameters:

  • sport (String) (defaults to: "nfl")

    Sport code (default: "nfl")

  • type (String) (defaults to: "add")

    Trend type ("add" or "drop", default: "add")

  • lookback_hours (Integer) (defaults to: 24)

    Hours to look back (default: 24)

  • limit (Integer) (defaults to: 25)

    Max results (default: 25)

Returns:

  • (Array<Hash>)

    Trending players

See Also:



216
217
218
# File 'lib/sleeper_api/client.rb', line 216

def trending_players(sport = "nfl", type: "add", lookback_hours: 24, limit: 25)
  make_request("/players/#{sport}/trending/#{type}?lookback_hours=#{lookback_hours}&limit=#{limit}")
end

#user(identifier) ⇒ SleeperApi::User

Create a new User instance.

Parameters:

  • identifier (String)

    Username or user ID

Returns:

See Also:



41
42
43
# File 'lib/sleeper_api/client.rb', line 41

def user(identifier)
  User.new(identifier, self)
end