sleeper_ff 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +72 -2
- data/lib/sleeper_ff/client/drafts.rb +48 -0
- data/lib/sleeper_ff/client/leagues.rb +61 -2
- data/lib/sleeper_ff/client/players.rb +24 -0
- data/lib/sleeper_ff/client.rb +4 -0
- data/lib/sleeper_ff/draft.rb +30 -0
- data/lib/sleeper_ff/league.rb +46 -0
- data/lib/sleeper_ff/version.rb +1 -1
- metadata +10 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: e7003f4a5b2c10ca28f61fb523031b6191985e36998dd644266c2599c696c983
|
|
4
|
+
data.tar.gz: 4de640ecc50838e96b08b48f76fd7cdd570314ca8fe585f37908d440a1175583
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 70e4b1ec4e14b3d43bfe9cbdef93d1edc90a3c42e13b27d5911e5f4e905161c128afe35ab8d82ed4d0a63c566d5b1028f369813c69a0c443a42771bdabbd0660
|
|
7
|
+
data.tar.gz: 3fde189ef7e7e4cdc918a37db469182c40f3a90ff153eb128e9bd08eb48f914fc5c3a7d2f719318ec3546d5d95394555457d938d2117dd0b56e97559ce14bc0d
|
data/README.md
CHANGED
|
@@ -79,6 +79,11 @@ rosters = client.league_rosters("league_id")
|
|
|
79
79
|
|
|
80
80
|
# Get all users in a league
|
|
81
81
|
users = client.league_users("league_id")
|
|
82
|
+
|
|
83
|
+
# Get all drafts for a league
|
|
84
|
+
drafts = client.league_drafts("league_id")
|
|
85
|
+
# or via the league object
|
|
86
|
+
drafts = league.drafts
|
|
82
87
|
```
|
|
83
88
|
|
|
84
89
|
You can access various attributes on the returned objects:
|
|
@@ -97,9 +102,74 @@ roster.starters # => ["player_id1", "player_id2", ...]
|
|
|
97
102
|
roster.settings # => { wins: 10, losses: 4, ... }
|
|
98
103
|
```
|
|
99
104
|
|
|
105
|
+
### Drafts
|
|
106
|
+
|
|
107
|
+
```ruby
|
|
108
|
+
# Get all drafts for a user in a season
|
|
109
|
+
drafts = client.user_drafts("user_id", 2023)
|
|
110
|
+
|
|
111
|
+
# Get a specific draft
|
|
112
|
+
draft = client.draft("draft_id")
|
|
113
|
+
|
|
114
|
+
# Get all picks in a draft
|
|
115
|
+
picks = client.draft_picks("draft_id")
|
|
116
|
+
# or via the draft object
|
|
117
|
+
picks = draft.picks
|
|
118
|
+
|
|
119
|
+
# Get all traded picks in a draft
|
|
120
|
+
traded_picks = client.draft_traded_picks("draft_id")
|
|
121
|
+
# or via the draft object
|
|
122
|
+
traded_picks = draft.traded_picks
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
You can access various attributes on draft objects:
|
|
126
|
+
|
|
127
|
+
```ruby
|
|
128
|
+
# Draft attributes
|
|
129
|
+
draft.draft_id # => "917001170459361281"
|
|
130
|
+
draft.league_id # => "917001170459361280"
|
|
131
|
+
draft.type # => "snake"
|
|
132
|
+
draft.status # => "complete"
|
|
133
|
+
draft.season # => "2023"
|
|
134
|
+
draft.settings # => { teams: 12, rounds: 15, ... }
|
|
135
|
+
draft.draft_order # => { "user_id" => slot, ... }
|
|
136
|
+
|
|
137
|
+
# Pick attributes
|
|
138
|
+
pick.player_id # => "4046"
|
|
139
|
+
pick.picked_by # => "user_id"
|
|
140
|
+
pick.round # => 1
|
|
141
|
+
pick.pick_no # => 1
|
|
142
|
+
pick.metadata # => { first_name: "Kareem", last_name: "Hunt", ... }
|
|
143
|
+
|
|
144
|
+
# Traded pick attributes
|
|
145
|
+
traded_pick.season # => "2023"
|
|
146
|
+
traded_pick.round # => 3
|
|
147
|
+
traded_pick.roster_id # => 1
|
|
148
|
+
traded_pick.previous_owner_id # => 3
|
|
149
|
+
traded_pick.owner_id # => 5
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
### Players
|
|
153
|
+
|
|
154
|
+
```ruby
|
|
155
|
+
# Fetch all NFL players (response is ~5MB, cache locally and call sparingly)
|
|
156
|
+
players = client.players
|
|
157
|
+
|
|
158
|
+
# Get trending players by add or drop activity
|
|
159
|
+
trending = client.trending_players("add")
|
|
160
|
+
trending = client.trending_players("drop")
|
|
161
|
+
|
|
162
|
+
# Optional parameters
|
|
163
|
+
trending = client.trending_players("add", lookback_hours: 48, limit: 10)
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
```ruby
|
|
167
|
+
# Trending player attributes
|
|
168
|
+
trending.first.player_id # => "4046"
|
|
169
|
+
trending.first.count # => 1842
|
|
170
|
+
```
|
|
171
|
+
|
|
100
172
|
More endpoints coming soon:
|
|
101
|
-
- Players
|
|
102
|
-
- Drafts
|
|
103
173
|
- Matchups
|
|
104
174
|
- Transactions
|
|
105
175
|
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "sleeper_ff/draft"
|
|
4
|
+
|
|
5
|
+
module SleeperFF
|
|
6
|
+
class Client
|
|
7
|
+
module Drafts
|
|
8
|
+
# Get all drafts for a user in a season
|
|
9
|
+
#
|
|
10
|
+
# @param user_id [String] User ID
|
|
11
|
+
# @param season [Integer] NFL season year (e.g., 2023)
|
|
12
|
+
# @return [Array<SleeperFF::Draft>] Array of draft objects
|
|
13
|
+
def user_drafts(user_id, season)
|
|
14
|
+
data = get "user/#{user_id}/drafts/nfl/#{season}"
|
|
15
|
+
return [] if data.nil?
|
|
16
|
+
|
|
17
|
+
data.map { |d| SleeperFF::Draft.new(d, self) }
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# Get a specific draft
|
|
21
|
+
#
|
|
22
|
+
# @param draft_id [String] Draft ID
|
|
23
|
+
# @return [SleeperFF::Draft] Draft object
|
|
24
|
+
def draft(draft_id)
|
|
25
|
+
data = get "draft/#{draft_id}"
|
|
26
|
+
return nil if data.nil?
|
|
27
|
+
|
|
28
|
+
SleeperFF::Draft.new(data, self)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# Get all picks in a draft
|
|
32
|
+
#
|
|
33
|
+
# @param draft_id [String] Draft ID
|
|
34
|
+
# @return [Array<Sawyer::Resource>] Array of pick objects
|
|
35
|
+
def draft_picks(draft_id)
|
|
36
|
+
get "draft/#{draft_id}/picks"
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# Get all traded picks in a draft
|
|
40
|
+
#
|
|
41
|
+
# @param draft_id [String] Draft ID
|
|
42
|
+
# @return [Array<Sawyer::Resource>] Array of traded pick objects
|
|
43
|
+
def draft_traded_picks(draft_id)
|
|
44
|
+
get "draft/#{draft_id}/traded_picks"
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
require "sleeper_ff/league"
|
|
4
|
+
require "sleeper_ff/draft"
|
|
5
|
+
|
|
3
6
|
module SleeperFF
|
|
4
7
|
class Client
|
|
5
8
|
module Leagues
|
|
@@ -15,9 +18,12 @@ module SleeperFF
|
|
|
15
18
|
# Get a specific league
|
|
16
19
|
#
|
|
17
20
|
# @param league_id [String] League ID
|
|
18
|
-
# @return [
|
|
21
|
+
# @return [SleeperFF::League] League object
|
|
19
22
|
def league(league_id)
|
|
20
|
-
get "league/#{league_id}"
|
|
23
|
+
data = get "league/#{league_id}"
|
|
24
|
+
return nil if data.nil?
|
|
25
|
+
|
|
26
|
+
SleeperFF::League.new(data, self)
|
|
21
27
|
end
|
|
22
28
|
|
|
23
29
|
# Get all rosters in a league
|
|
@@ -35,6 +41,59 @@ module SleeperFF
|
|
|
35
41
|
def league_users(league_id)
|
|
36
42
|
get "league/#{league_id}/users"
|
|
37
43
|
end
|
|
44
|
+
|
|
45
|
+
# Get transactions for a specific round (week) in a league
|
|
46
|
+
#
|
|
47
|
+
# @param league_id [String] League ID
|
|
48
|
+
# @param round [Integer] Week/round number
|
|
49
|
+
# @return [Array<Sawyer::Resource>] Array of transaction objects
|
|
50
|
+
def league_transactions(league_id, round)
|
|
51
|
+
get "league/#{league_id}/transactions/#{round}"
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
# Get all traded picks in a league
|
|
55
|
+
#
|
|
56
|
+
# @param league_id [String] League ID
|
|
57
|
+
# @return [Array<Sawyer::Resource>] Array of traded pick objects
|
|
58
|
+
def league_traded_picks(league_id)
|
|
59
|
+
get "league/#{league_id}/traded_picks"
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
# Get the winners playoff bracket for a league
|
|
63
|
+
#
|
|
64
|
+
# @param league_id [String] League ID
|
|
65
|
+
# @return [Array<Sawyer::Resource>] Array of bracket matchup objects
|
|
66
|
+
def league_winners_bracket(league_id)
|
|
67
|
+
get "league/#{league_id}/winners_bracket"
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
# Get the losers playoff bracket for a league
|
|
71
|
+
#
|
|
72
|
+
# @param league_id [String] League ID
|
|
73
|
+
# @return [Array<Sawyer::Resource>] Array of bracket matchup objects
|
|
74
|
+
def league_losers_bracket(league_id)
|
|
75
|
+
get "league/#{league_id}/losers_bracket"
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
# Get matchups for a specific week in a league
|
|
79
|
+
#
|
|
80
|
+
# @param league_id [String] League ID
|
|
81
|
+
# @param week [Integer] Week number
|
|
82
|
+
# @return [Array<Sawyer::Resource>] Array of matchup objects
|
|
83
|
+
def league_matchups(league_id, week)
|
|
84
|
+
get "league/#{league_id}/matchups/#{week}"
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
# Get all drafts for a league
|
|
88
|
+
#
|
|
89
|
+
# @param league_id [String] League ID
|
|
90
|
+
# @return [Array<SleeperFF::Draft>] Array of draft objects
|
|
91
|
+
def league_drafts(league_id)
|
|
92
|
+
data = get "league/#{league_id}/drafts"
|
|
93
|
+
return [] if data.nil?
|
|
94
|
+
|
|
95
|
+
data.map { |d| SleeperFF::Draft.new(d, self) }
|
|
96
|
+
end
|
|
38
97
|
end
|
|
39
98
|
end
|
|
40
99
|
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module SleeperFF
|
|
4
|
+
class Client
|
|
5
|
+
module Players
|
|
6
|
+
# Get all NFL players
|
|
7
|
+
#
|
|
8
|
+
# @return [Hash] Hash of player information keyed by player ID
|
|
9
|
+
def players
|
|
10
|
+
get "players/nfl"
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
# Get trending NFL players by add or drop activity
|
|
14
|
+
#
|
|
15
|
+
# @param type [String] "add" or "drop"
|
|
16
|
+
# @param lookback_hours [Integer] Hours to look back (default 24)
|
|
17
|
+
# @param limit [Integer] Number of results to return (default 25)
|
|
18
|
+
# @return [Array<Sawyer::Resource>] Array of trending player objects
|
|
19
|
+
def trending_players(type, lookback_hours: 24, limit: 25)
|
|
20
|
+
get "players/nfl/trending/#{type}", query: { lookback_hours: lookback_hours, limit: limit }
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
data/lib/sleeper_ff/client.rb
CHANGED
|
@@ -4,12 +4,16 @@ require "sawyer"
|
|
|
4
4
|
require "sleeper_ff/configurable"
|
|
5
5
|
require "sleeper_ff/client/users"
|
|
6
6
|
require "sleeper_ff/client/leagues"
|
|
7
|
+
require "sleeper_ff/client/drafts"
|
|
8
|
+
require "sleeper_ff/client/players"
|
|
7
9
|
|
|
8
10
|
module SleeperFF
|
|
9
11
|
class Client
|
|
10
12
|
include SleeperFF::Configurable
|
|
11
13
|
include SleeperFF::Client::Users
|
|
12
14
|
include SleeperFF::Client::Leagues
|
|
15
|
+
include SleeperFF::Client::Drafts
|
|
16
|
+
include SleeperFF::Client::Players
|
|
13
17
|
|
|
14
18
|
# Header keys that can be passed in options hash
|
|
15
19
|
CONVENIENCE_HEADERS = Set.new([:accept, :content_type])
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module SleeperFF
|
|
4
|
+
class Draft
|
|
5
|
+
def initialize(data, client)
|
|
6
|
+
@data = data
|
|
7
|
+
@client = client
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def picks
|
|
11
|
+
@client.draft_picks(@data.draft_id)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def traded_picks
|
|
15
|
+
@client.draft_traded_picks(@data.draft_id)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def respond_to_missing?(method_name, include_private = false)
|
|
19
|
+
@data.respond_to?(method_name) || super
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def method_missing(method_name, *args, &block)
|
|
23
|
+
if @data.respond_to?(method_name)
|
|
24
|
+
@data.send(method_name, *args, &block)
|
|
25
|
+
else
|
|
26
|
+
super
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module SleeperFF
|
|
4
|
+
class League
|
|
5
|
+
def initialize(data, client)
|
|
6
|
+
@data = data
|
|
7
|
+
@client = client
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def transactions(round)
|
|
11
|
+
@client.league_transactions(@data.league_id, round)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def traded_picks
|
|
15
|
+
@client.league_traded_picks(@data.league_id)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def winners_bracket
|
|
19
|
+
@client.league_winners_bracket(@data.league_id)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def losers_bracket
|
|
23
|
+
@client.league_losers_bracket(@data.league_id)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def matchups(week)
|
|
27
|
+
@client.league_matchups(@data.league_id, week)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def drafts
|
|
31
|
+
@client.league_drafts(@data.league_id)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def respond_to_missing?(method_name, include_private = false)
|
|
35
|
+
@data.respond_to?(method_name) || super
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def method_missing(method_name, *args, &block)
|
|
39
|
+
if @data.respond_to?(method_name)
|
|
40
|
+
@data.send(method_name, *args, &block)
|
|
41
|
+
else
|
|
42
|
+
super
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
data/lib/sleeper_ff/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: sleeper_ff
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Josh Mejia
|
|
8
|
+
autorequire:
|
|
8
9
|
bindir: bin
|
|
9
10
|
cert_chain: []
|
|
10
|
-
date:
|
|
11
|
+
date: 2026-02-22 00:00:00.000000000 Z
|
|
11
12
|
dependencies:
|
|
12
13
|
- !ruby/object:Gem::Dependency
|
|
13
14
|
name: faraday
|
|
@@ -106,16 +107,21 @@ files:
|
|
|
106
107
|
- bin/setup
|
|
107
108
|
- lib/sleeper_ff.rb
|
|
108
109
|
- lib/sleeper_ff/client.rb
|
|
110
|
+
- lib/sleeper_ff/client/drafts.rb
|
|
109
111
|
- lib/sleeper_ff/client/leagues.rb
|
|
112
|
+
- lib/sleeper_ff/client/players.rb
|
|
110
113
|
- lib/sleeper_ff/client/users.rb
|
|
111
114
|
- lib/sleeper_ff/configurable.rb
|
|
112
115
|
- lib/sleeper_ff/default.rb
|
|
116
|
+
- lib/sleeper_ff/draft.rb
|
|
113
117
|
- lib/sleeper_ff/error.rb
|
|
118
|
+
- lib/sleeper_ff/league.rb
|
|
114
119
|
- lib/sleeper_ff/version.rb
|
|
115
120
|
homepage: https://github.com/jmejia/sleeper_ff
|
|
116
121
|
licenses:
|
|
117
122
|
- MIT
|
|
118
123
|
metadata: {}
|
|
124
|
+
post_install_message:
|
|
119
125
|
rdoc_options: []
|
|
120
126
|
require_paths:
|
|
121
127
|
- lib
|
|
@@ -130,7 +136,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
130
136
|
- !ruby/object:Gem::Version
|
|
131
137
|
version: '0'
|
|
132
138
|
requirements: []
|
|
133
|
-
rubygems_version: 3.
|
|
139
|
+
rubygems_version: 3.4.10
|
|
140
|
+
signing_key:
|
|
134
141
|
specification_version: 4
|
|
135
142
|
summary: Ruby toolkit for the Sleeper Fantasy Football API
|
|
136
143
|
test_files: []
|