sleeper_rb 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 +7 -0
- data/.gitignore +15 -0
- data/.rspec +3 -0
- data/.rubocop.yml +18 -0
- data/.travis.yml +8 -0
- data/CHANGELOG.md +9 -0
- data/CODE_OF_CONDUCT.md +84 -0
- data/Gemfile +14 -0
- data/Gemfile.lock +91 -0
- data/LICENSE.txt +21 -0
- data/README.md +92 -0
- data/Rakefile +24 -0
- data/bin/console +15 -0
- data/bin/setup +8 -0
- data/docs/SleeperRb/BadRequest.html +106 -0
- data/docs/SleeperRb/Client.html +354 -0
- data/docs/SleeperRb/NotFound.html +106 -0
- data/docs/SleeperRb/RateLimitExceeded.html +106 -0
- data/docs/SleeperRb/Resources/Avatar.html +231 -0
- data/docs/SleeperRb/Resources/Draft/Metadata.html +419 -0
- data/docs/SleeperRb/Resources/Draft/Pick/Metadata.html +346 -0
- data/docs/SleeperRb/Resources/Draft/Pick.html +430 -0
- data/docs/SleeperRb/Resources/Draft/PickArray.html +108 -0
- data/docs/SleeperRb/Resources/Draft/Settings.html +361 -0
- data/docs/SleeperRb/Resources/Draft.html +560 -0
- data/docs/SleeperRb/Resources/DraftArray.html +198 -0
- data/docs/SleeperRb/Resources/League/Matchup.html +349 -0
- data/docs/SleeperRb/Resources/League/MatchupArray.html +108 -0
- data/docs/SleeperRb/Resources/League/Roster/Settings.html +415 -0
- data/docs/SleeperRb/Resources/League/Roster.html +409 -0
- data/docs/SleeperRb/Resources/League/RosterArray.html +108 -0
- data/docs/SleeperRb/Resources/League/ScoringSettings.html +808 -0
- data/docs/SleeperRb/Resources/League/Settings.html +648 -0
- data/docs/SleeperRb/Resources/League/Transaction/Metadata.html +119 -0
- data/docs/SleeperRb/Resources/League/Transaction/Settings.html +140 -0
- data/docs/SleeperRb/Resources/League/Transaction/WaiverBudget.html +292 -0
- data/docs/SleeperRb/Resources/League/Transaction.html +679 -0
- data/docs/SleeperRb/Resources/League/TransactionArray.html +272 -0
- data/docs/SleeperRb/Resources/League.html +688 -0
- data/docs/SleeperRb/Resources/LeagueArray.html +272 -0
- data/docs/SleeperRb/Resources/NflState.html +252 -0
- data/docs/SleeperRb/Resources/Player.html +860 -0
- data/docs/SleeperRb/Resources/PlayerArray.html +108 -0
- data/docs/SleeperRb/Resources/TradedPick.html +345 -0
- data/docs/SleeperRb/Resources/TradedPickArray.html +108 -0
- data/docs/SleeperRb/Resources/User/Metadata.html +140 -0
- data/docs/SleeperRb/Resources/User.html +406 -0
- data/docs/SleeperRb/Resources/UserArray.html +108 -0
- data/docs/SleeperRb/Resources.html +99 -0
- data/docs/SleeperRb/ServerError.html +106 -0
- data/docs/SleeperRb/Utilities/ArrayProxy.html +184 -0
- data/docs/SleeperRb/Utilities/Cache/ClassMethods.html +326 -0
- data/docs/SleeperRb/Utilities/Cache.html +253 -0
- data/docs/SleeperRb/Utilities/Request.html +120 -0
- data/docs/SleeperRb/Utilities/RosterPosition.html +239 -0
- data/docs/SleeperRb/Utilities.html +99 -0
- data/docs/SleeperRb.html +113 -0
- data/docs/created.rid +38 -0
- data/docs/css/fonts.css +167 -0
- data/docs/css/rdoc.css +619 -0
- data/docs/fonts/Lato-Light.ttf +0 -0
- data/docs/fonts/Lato-LightItalic.ttf +0 -0
- data/docs/fonts/Lato-Regular.ttf +0 -0
- data/docs/fonts/Lato-RegularItalic.ttf +0 -0
- data/docs/fonts/SourceCodePro-Bold.ttf +0 -0
- data/docs/fonts/SourceCodePro-Regular.ttf +0 -0
- data/docs/images/add.png +0 -0
- data/docs/images/arrow_up.png +0 -0
- data/docs/images/brick.png +0 -0
- data/docs/images/brick_link.png +0 -0
- data/docs/images/bug.png +0 -0
- data/docs/images/bullet_black.png +0 -0
- data/docs/images/bullet_toggle_minus.png +0 -0
- data/docs/images/bullet_toggle_plus.png +0 -0
- data/docs/images/date.png +0 -0
- data/docs/images/delete.png +0 -0
- data/docs/images/find.png +0 -0
- data/docs/images/loadingAnimation.gif +0 -0
- data/docs/images/macFFBgHack.png +0 -0
- data/docs/images/package.png +0 -0
- data/docs/images/page_green.png +0 -0
- data/docs/images/page_white_text.png +0 -0
- data/docs/images/page_white_width.png +0 -0
- data/docs/images/plugin.png +0 -0
- data/docs/images/ruby.png +0 -0
- data/docs/images/tag_blue.png +0 -0
- data/docs/images/tag_green.png +0 -0
- data/docs/images/transparent.png +0 -0
- data/docs/images/wrench.png +0 -0
- data/docs/images/wrench_orange.png +0 -0
- data/docs/images/zoom.png +0 -0
- data/docs/index.html +171 -0
- data/docs/js/darkfish.js +84 -0
- data/docs/js/navigation.js +105 -0
- data/docs/js/navigation.js.gz +0 -0
- data/docs/js/search.js +110 -0
- data/docs/js/search_index.js +1 -0
- data/docs/js/search_index.js.gz +0 -0
- data/docs/js/searcher.js +229 -0
- data/docs/js/searcher.js.gz +0 -0
- data/docs/table_of_contents.html +770 -0
- data/lib/sleeper_rb/client.rb +80 -0
- data/lib/sleeper_rb/resources/avatar.rb +43 -0
- data/lib/sleeper_rb/resources/draft/metadata.rb +83 -0
- data/lib/sleeper_rb/resources/draft/pick/metadata.rb +64 -0
- data/lib/sleeper_rb/resources/draft/pick.rb +85 -0
- data/lib/sleeper_rb/resources/draft/pick_array.rb +11 -0
- data/lib/sleeper_rb/resources/draft/settings.rb +73 -0
- data/lib/sleeper_rb/resources/draft.rb +129 -0
- data/lib/sleeper_rb/resources/draft_array.rb +25 -0
- data/lib/sleeper_rb/resources/league/matchup.rb +66 -0
- data/lib/sleeper_rb/resources/league/matchup_array.rb +11 -0
- data/lib/sleeper_rb/resources/league/roster/settings.rb +76 -0
- data/lib/sleeper_rb/resources/league/roster.rb +73 -0
- data/lib/sleeper_rb/resources/league/roster_array.rb +11 -0
- data/lib/sleeper_rb/resources/league/scoring_settings.rb +172 -0
- data/lib/sleeper_rb/resources/league/settings.rb +148 -0
- data/lib/sleeper_rb/resources/league/transaction/metadata.rb +22 -0
- data/lib/sleeper_rb/resources/league/transaction/settings.rb +22 -0
- data/lib/sleeper_rb/resources/league/transaction/waiver_budget.rb +52 -0
- data/lib/sleeper_rb/resources/league/transaction.rb +153 -0
- data/lib/sleeper_rb/resources/league/transaction_array.rb +43 -0
- data/lib/sleeper_rb/resources/league.rb +197 -0
- data/lib/sleeper_rb/resources/league_array.rb +41 -0
- data/lib/sleeper_rb/resources/nfl_state.rb +51 -0
- data/lib/sleeper_rb/resources/player.rb +189 -0
- data/lib/sleeper_rb/resources/player_array.rb +16 -0
- data/lib/sleeper_rb/resources/traded_pick.rb +63 -0
- data/lib/sleeper_rb/resources/traded_pick_array.rb +9 -0
- data/lib/sleeper_rb/resources/user/metadata.rb +20 -0
- data/lib/sleeper_rb/resources/user.rb +104 -0
- data/lib/sleeper_rb/resources/user_array.rb +9 -0
- data/lib/sleeper_rb/utilities/array_proxy.rb +47 -0
- data/lib/sleeper_rb/utilities/cache.rb +132 -0
- data/lib/sleeper_rb/utilities/request.rb +42 -0
- data/lib/sleeper_rb/utilities/roster_position.rb +30 -0
- data/lib/sleeper_rb/version.rb +5 -0
- data/lib/sleeper_rb.rb +15 -0
- data/sleeper_rb.gemspec +35 -0
- metadata +185 -0
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
# frozen-string-literal: true
|
|
2
|
+
|
|
3
|
+
require_relative "transaction/metadata"
|
|
4
|
+
require_relative "transaction/settings"
|
|
5
|
+
require_relative "transaction/waiver_budget"
|
|
6
|
+
|
|
7
|
+
module SleeperRb
|
|
8
|
+
module Resources
|
|
9
|
+
class League
|
|
10
|
+
##
|
|
11
|
+
# Represents a waiver move, free agent transaction, or trade.
|
|
12
|
+
class Transaction
|
|
13
|
+
include SleeperRb::Utilities::Cache
|
|
14
|
+
|
|
15
|
+
##
|
|
16
|
+
# :attr_reader: transaction_id
|
|
17
|
+
|
|
18
|
+
##
|
|
19
|
+
# :attr_reader: type
|
|
20
|
+
|
|
21
|
+
##
|
|
22
|
+
# :attr_reader: status
|
|
23
|
+
|
|
24
|
+
##
|
|
25
|
+
# :attr_reader: roster_ids
|
|
26
|
+
|
|
27
|
+
##
|
|
28
|
+
# :attr_reader: week
|
|
29
|
+
|
|
30
|
+
##
|
|
31
|
+
# :attr_reader: drops
|
|
32
|
+
|
|
33
|
+
##
|
|
34
|
+
# :attr_reader: creator
|
|
35
|
+
|
|
36
|
+
##
|
|
37
|
+
# :attr_reader: consenter_ids
|
|
38
|
+
|
|
39
|
+
##
|
|
40
|
+
# :attr_reader: adds
|
|
41
|
+
|
|
42
|
+
##
|
|
43
|
+
# :attr_reader: created
|
|
44
|
+
|
|
45
|
+
##
|
|
46
|
+
# :attr_reader: status_updated
|
|
47
|
+
|
|
48
|
+
# rubocop:disable Layout/LineLength
|
|
49
|
+
|
|
50
|
+
##
|
|
51
|
+
# :method: waiver_budget
|
|
52
|
+
#
|
|
53
|
+
# @return [Array<{SleeperRb::Resources::League::Transaction::WaiverBudget}[rdoc-ref:SleeperRb::Resources::League::Transaction::WaiverBudget]>]
|
|
54
|
+
|
|
55
|
+
##
|
|
56
|
+
# :method: settings
|
|
57
|
+
#
|
|
58
|
+
# @return [{SleeperRb::Resources::League::Transaction::Settings}[rdoc-ref:SleeperRb::Resources::League::Transaction::Settings]]
|
|
59
|
+
|
|
60
|
+
##
|
|
61
|
+
# :method: metadata
|
|
62
|
+
#
|
|
63
|
+
# @return [{SleeperRb::Resources::League::Transaction::Metadata}[rdoc-ref:SleeperRb::Resources::League::Transaction::Metadata]]
|
|
64
|
+
|
|
65
|
+
## :method: league
|
|
66
|
+
# The league this transaction is a part of.
|
|
67
|
+
#
|
|
68
|
+
# @return [{SleeperRb::Resources::League}[rdoc-ref:SleeperRb::Resources::League]]
|
|
69
|
+
|
|
70
|
+
##
|
|
71
|
+
# :method: draft_picks
|
|
72
|
+
# Any draft picks traded as part of this transaction.
|
|
73
|
+
#
|
|
74
|
+
# @return [{SleeperRb::Resources::TradedPickArray}[rdoc-ref:SleeperRb::Resources::TradedPickArray]]
|
|
75
|
+
|
|
76
|
+
# rubocop:enable Layout/LineLength
|
|
77
|
+
|
|
78
|
+
cached_attr :league, :transaction_id, :type, :status, :roster_ids, :leg, :drops, :creator, :consenter_ids,
|
|
79
|
+
:adds, created: :timestamp, status_updated: :timestamp,
|
|
80
|
+
waiver_budget: ->(array) { array&.map { |hash| WaiverBudget.new(hash.merge(transaction: self)) } },
|
|
81
|
+
settings: ->(hash) { Settings.new(hash || {}) },
|
|
82
|
+
metadata: ->(hash) { Metadata.new(hash || {}) },
|
|
83
|
+
draft_picks: ->(array) { TradedPickArray.new(array&.map { |hash| TradedPick.new(hash) }) }
|
|
84
|
+
|
|
85
|
+
delegate(*Settings.cached_attrs.keys, to: :settings)
|
|
86
|
+
delegate(*Metadata.cached_attrs.keys, to: :settings)
|
|
87
|
+
|
|
88
|
+
alias week leg
|
|
89
|
+
|
|
90
|
+
skip_refresh :all
|
|
91
|
+
|
|
92
|
+
##
|
|
93
|
+
# :method: rosters
|
|
94
|
+
# Returns rosters participating in this transaction.
|
|
95
|
+
#
|
|
96
|
+
# @return [{SleeperRb::Resources::League::RosterArray}[rdoc-ref:SleeperRb::Resources::League::RosterArray]]
|
|
97
|
+
cached_association :rosters do
|
|
98
|
+
league.rosters.where(roster_id: { in: roster_ids })
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
##
|
|
102
|
+
# :method: user
|
|
103
|
+
# Returns the User who created this transaction.
|
|
104
|
+
#
|
|
105
|
+
# @return [{SleeperRb::Resources::User}[rdoc-ref:SleeperRb::Resources::User]]
|
|
106
|
+
cached_association :user do
|
|
107
|
+
league.users.detect { |user| user.user_id == creator }
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
##
|
|
111
|
+
# :method: consenting_rosters
|
|
112
|
+
# Returns the rosters who consented to this transaction.
|
|
113
|
+
#
|
|
114
|
+
# @return [{SleeperRb::Resources::League::RosterArray}[rdoc-ref:SleeperRb::Resources::League::RosterArray]]
|
|
115
|
+
cached_association :consenting_rosters do
|
|
116
|
+
league.rosters.where(roster_id: { in: consenter_ids })
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
##
|
|
120
|
+
# Returns true if the transaction is a trade.
|
|
121
|
+
#
|
|
122
|
+
# @return [Boolean]
|
|
123
|
+
def trade?
|
|
124
|
+
type == "trade"
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
##
|
|
128
|
+
# Returns true if the transaction is for a free agent.
|
|
129
|
+
#
|
|
130
|
+
# @return [Boolean]
|
|
131
|
+
def free_agent?
|
|
132
|
+
type == "free_agent"
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
##
|
|
136
|
+
# Returns true if the transaction is for a free agent acquired with FAAB.
|
|
137
|
+
#
|
|
138
|
+
# @return [Boolean]
|
|
139
|
+
def faab?
|
|
140
|
+
free_agent? && !waiver_bid.nil?
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
##
|
|
144
|
+
# Returns true if the transaction is for a free agent acquired via the waiver wire.
|
|
145
|
+
#
|
|
146
|
+
# @return [Boolean]
|
|
147
|
+
def waiver?
|
|
148
|
+
free_agent? && !waiver_bid
|
|
149
|
+
end
|
|
150
|
+
end
|
|
151
|
+
end
|
|
152
|
+
end
|
|
153
|
+
end
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# frozen-string-literal: true
|
|
2
|
+
|
|
3
|
+
module SleeperRb
|
|
4
|
+
module Resources
|
|
5
|
+
class League
|
|
6
|
+
##
|
|
7
|
+
# Implements {SleeperRb::Utilities::ArrayProxy} and wraps Transaction objects.
|
|
8
|
+
class TransactionArray < SleeperRb::Utilities::ArrayProxy
|
|
9
|
+
##
|
|
10
|
+
# Returns transactions which are trades.
|
|
11
|
+
#
|
|
12
|
+
# @return [{SleeperRb::Resources::League::TransactionArray}[rdoc-ref:SleeperRb::Resources::League::TransactionArray]]
|
|
13
|
+
def trade
|
|
14
|
+
where(type: "trade")
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
##
|
|
18
|
+
# Returns transactions which are free agent acquisitions.
|
|
19
|
+
#
|
|
20
|
+
# @return [{SleeperRb::Resources::League::TransactionArray}[rdoc-ref:SleeperRb::Resources::League::TransactionArray]]
|
|
21
|
+
def free_agent
|
|
22
|
+
where(type: "free_agent")
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
##
|
|
26
|
+
# Returns transactions which are free agent acquisitions made with FAAB.
|
|
27
|
+
#
|
|
28
|
+
# @return [{SleeperRb::Resources::League::TransactionArray}[rdoc-ref:SleeperRb::Resources::League::TransactionArray]]
|
|
29
|
+
def faab
|
|
30
|
+
where(type: "free_agent", waiver_bid: { not: nil })
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
##
|
|
34
|
+
# Returns transactions which are free agent acquisitions made via the waiver wire.
|
|
35
|
+
#
|
|
36
|
+
# @return [{SleeperRb::Resources::League::TransactionArray}[rdoc-ref:SleeperRb::Resources::League::TransactionArray]]
|
|
37
|
+
def waiver
|
|
38
|
+
where(type: "free_agent", waiver_bid: nil)
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative "league/matchup"
|
|
4
|
+
require_relative "league/matchup_array"
|
|
5
|
+
require_relative "league/roster"
|
|
6
|
+
require_relative "league/roster_array"
|
|
7
|
+
require_relative "league/scoring_settings"
|
|
8
|
+
require_relative "league/settings"
|
|
9
|
+
require_relative "league/transaction"
|
|
10
|
+
require_relative "league/transaction_array"
|
|
11
|
+
|
|
12
|
+
module SleeperRb
|
|
13
|
+
module Resources
|
|
14
|
+
##
|
|
15
|
+
# This class represents a Fantasy Football League and is the access point for associated resources.
|
|
16
|
+
# All attributes are lazily loaded and cache their value based on the API response.
|
|
17
|
+
class League
|
|
18
|
+
include SleeperRb::Utilities::Request
|
|
19
|
+
include SleeperRb::Utilities::Cache
|
|
20
|
+
|
|
21
|
+
##
|
|
22
|
+
# :attr_reader: total_rosters
|
|
23
|
+
|
|
24
|
+
##
|
|
25
|
+
# :attr_reader: status
|
|
26
|
+
|
|
27
|
+
##
|
|
28
|
+
# :attr_reader: sport
|
|
29
|
+
|
|
30
|
+
##
|
|
31
|
+
# :attr_reader: season_type
|
|
32
|
+
|
|
33
|
+
##
|
|
34
|
+
# :attr_reader: season
|
|
35
|
+
|
|
36
|
+
##
|
|
37
|
+
# :attr_reader: previous_league_id
|
|
38
|
+
|
|
39
|
+
##
|
|
40
|
+
# :attr_reader: name
|
|
41
|
+
|
|
42
|
+
##
|
|
43
|
+
# :attr_reader: league_id
|
|
44
|
+
|
|
45
|
+
##
|
|
46
|
+
# :attr_reader: draft_id
|
|
47
|
+
|
|
48
|
+
##
|
|
49
|
+
# :method: avatar
|
|
50
|
+
# Retrieves the Avatar instance for the league.
|
|
51
|
+
#
|
|
52
|
+
# @return [{SleeperRb::Resources::Avatar}[rdoc-ref:SleeperRb::Resources::Avatar]]
|
|
53
|
+
|
|
54
|
+
##
|
|
55
|
+
# :method: scoring_settings
|
|
56
|
+
# Retrieves the scoring settings for the league.
|
|
57
|
+
#
|
|
58
|
+
# @return [{SleeperRb::Resources::League::ScoringSettings}[rdoc-ref:SleeperRb::Resources::League::ScoringSettings]]
|
|
59
|
+
|
|
60
|
+
##
|
|
61
|
+
# :method: roster_positions
|
|
62
|
+
# Retrieves the available roster positions for the league.
|
|
63
|
+
#
|
|
64
|
+
# @return [Array<{SleeperRb::Utilities::RosterPosition}[rdoc-ref:SleeperRb::Utilities::RosterPosition]>]
|
|
65
|
+
|
|
66
|
+
##
|
|
67
|
+
# :method: settings
|
|
68
|
+
# Returns the non-scoring settings for the league.
|
|
69
|
+
#
|
|
70
|
+
# @return [{SleeperRb::Resources::League::Settings}[rdoc-ref:SleeperRb::Resources::League::Settings]]
|
|
71
|
+
cached_attr :total_rosters, :status, :sport, :season_type, :season, :previous_league_id, :name, :league_id,
|
|
72
|
+
:draft_id, avatar: ->(id) { Resources::Avatar.new(avatar_id: id) },
|
|
73
|
+
scoring_settings: ->(settings) { ScoringSettings.new(settings) },
|
|
74
|
+
roster_positions: lambda { |array|
|
|
75
|
+
array.map do |pos|
|
|
76
|
+
SleeperRb::Utilities::RosterPosition.new(pos)
|
|
77
|
+
end
|
|
78
|
+
},
|
|
79
|
+
settings: ->(settings) { Settings.new(settings) }
|
|
80
|
+
|
|
81
|
+
delegate(*Settings.cached_attrs.keys, to: :settings)
|
|
82
|
+
delegate(*ScoringSettings.cached_attrs.keys, to: :scoring_settings)
|
|
83
|
+
delegate :ppr?, :half_ppr?, :standard?, to: :scoring_settings
|
|
84
|
+
|
|
85
|
+
##
|
|
86
|
+
# :method: rosters
|
|
87
|
+
# Retrieves rosters for the League.
|
|
88
|
+
#
|
|
89
|
+
# @return [{SleeperRb::Resources::League::RosterArray}[rdoc-ref:SleeperRb::Resources::League::RosterArray]]
|
|
90
|
+
cached_association :rosters do
|
|
91
|
+
retrieve_rosters!
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
##
|
|
95
|
+
# :method: users
|
|
96
|
+
# Retrieves users for the League.
|
|
97
|
+
#
|
|
98
|
+
# @return [{SleeperRb::Resources::UserArray}[rdoc-ref:SleeperRb::Resources::UserArray]]
|
|
99
|
+
cached_association :users do
|
|
100
|
+
retrieve_users!
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
##
|
|
104
|
+
# :method: matchups
|
|
105
|
+
# Returns matchups for the League for the given week.
|
|
106
|
+
# :call-seq:
|
|
107
|
+
# matchups(week_number)
|
|
108
|
+
#
|
|
109
|
+
# @return [{SleeperRb::Resources::League::MatchupArray}[rdoc-ref:SleeperRb::Resources::League::MatchupArray]]
|
|
110
|
+
cached_association :matchups do |week|
|
|
111
|
+
retrieve_matchups!(week)
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
##
|
|
115
|
+
# :method: traded_picks
|
|
116
|
+
# Returns all traded draft picks for the League.
|
|
117
|
+
#
|
|
118
|
+
# @return [{SleeperRb::Resources::TradedPickArray}[rdoc-ref:SleeperRb::Resources::TradedPickArray]]
|
|
119
|
+
cached_association :traded_picks do
|
|
120
|
+
retrieve_traded_picks!
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
##
|
|
124
|
+
# :method: drafts
|
|
125
|
+
# Returns all drafts for the league
|
|
126
|
+
#
|
|
127
|
+
# @return [{SleeperRb::Resources::DraftArray}[rdoc-ref:SleeperRb::Resources::DraftArray]]
|
|
128
|
+
cached_association :drafts do
|
|
129
|
+
retrieve_drafts!
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
##
|
|
133
|
+
# :method: transactions
|
|
134
|
+
# Returns all transactions for the League for a given week.
|
|
135
|
+
# :call-seq:
|
|
136
|
+
# transactions(week_number)
|
|
137
|
+
#
|
|
138
|
+
# @return [{SleeperRb::Resources::League::TransactionArray}[rdoc-ref:SleeperRb::Resources::League::TransactionArray]]
|
|
139
|
+
cached_association :transactions do |week|
|
|
140
|
+
retrieve_transactions!(week)
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
def initialize(opts = {})
|
|
144
|
+
raise ArgumentError unless opts[:league_id]
|
|
145
|
+
|
|
146
|
+
super
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
SleeperRb::Utilities::RosterPosition::VALID_ROSTER_POSITIONS.each do |pos|
|
|
150
|
+
define_method(pos) { roster_positions.select(&:"#{pos}?").size }
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
private
|
|
154
|
+
|
|
155
|
+
def retrieve_values!
|
|
156
|
+
url = "#{BASE_URL}/league/#{league_id}"
|
|
157
|
+
execute_request(url)
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
def retrieve_rosters!
|
|
161
|
+
url = "#{BASE_URL}/league/#{league_id}/rosters"
|
|
162
|
+
response = execute_request(url)
|
|
163
|
+
RosterArray.new(response.map { |hash| Roster.new(hash.merge(league: self)) })
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
def retrieve_users!
|
|
167
|
+
url = "#{BASE_URL}/league/#{league_id}/users"
|
|
168
|
+
response = execute_request(url)
|
|
169
|
+
UserArray.new(response.map { |hash| User.new(hash) })
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
def retrieve_matchups!(week)
|
|
173
|
+
url = "#{BASE_URL}/league/#{league_id}/matchups/#{week}"
|
|
174
|
+
response = execute_request(url)
|
|
175
|
+
MatchupArray.new(response.map { |hash| Matchup.new(hash.merge(league: self)) })
|
|
176
|
+
end
|
|
177
|
+
|
|
178
|
+
def retrieve_traded_picks!
|
|
179
|
+
url = "#{BASE_URL}/league/#{league_id}/traded_picks"
|
|
180
|
+
response = execute_request(url)
|
|
181
|
+
TradedPickArray.new(response.map { |hash| TradedPick.new(hash.merge(league: self)) })
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
def retrieve_drafts!
|
|
185
|
+
url = "#{BASE_URL}/league/#{league_id}/drafts"
|
|
186
|
+
response = execute_request(url)
|
|
187
|
+
DraftArray.new(response.map { |hash| Draft.new(hash.merge(league: self)) })
|
|
188
|
+
end
|
|
189
|
+
|
|
190
|
+
def retrieve_transactions!(week)
|
|
191
|
+
url = "#{BASE_URL}/league/#{league_id}/transactions/#{week}"
|
|
192
|
+
response = execute_request(url)
|
|
193
|
+
TransactionArray.new(response.map { |hash| Transaction.new(hash.merge(league: self)) })
|
|
194
|
+
end
|
|
195
|
+
end
|
|
196
|
+
end
|
|
197
|
+
end
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# frozen-string-literal: true
|
|
2
|
+
|
|
3
|
+
module SleeperRb
|
|
4
|
+
module Resources
|
|
5
|
+
##
|
|
6
|
+
# Implements {SleeperRb::Utilities::ArrayProxy}[rdoc-ref:SleeperRb::Utilities::ArrayProxy] and wraps League objects.
|
|
7
|
+
class LeagueArray < SleeperRb::Utilities::ArrayProxy
|
|
8
|
+
##
|
|
9
|
+
# Returns leagues which are set to Best Ball mode.
|
|
10
|
+
#
|
|
11
|
+
# @return [{SleeperRb::Resources::LeagueArray}[rdoc-ref:SleeperRb::Resources::LeagueArray]]
|
|
12
|
+
def best_ball
|
|
13
|
+
where(best_ball: true)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
##
|
|
17
|
+
# Returns leagues which use PPR scoring.
|
|
18
|
+
#
|
|
19
|
+
# @return [{SleeperRb::Resources::LeagueArray}[rdoc-ref:SleeperRb::Resources::LeagueArray]]
|
|
20
|
+
def ppr
|
|
21
|
+
where(ppr?: true)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
##
|
|
25
|
+
# Returns leagues which use Half-PPR scoring.
|
|
26
|
+
#
|
|
27
|
+
# @return [{SleeperRb::Resources::LeagueArray}[rdoc-ref:SleeperRb::Resources::LeagueArray]]
|
|
28
|
+
def half_ppr
|
|
29
|
+
where(half_ppr?: true)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
##
|
|
33
|
+
# Returns leagues which use Standard (Zero PPR) scoring.
|
|
34
|
+
#
|
|
35
|
+
# @return [{SleeperRb::Resources::LeagueArray}[rdoc-ref:SleeperRb::Resources::LeagueArray]]
|
|
36
|
+
def standard
|
|
37
|
+
where(standard?: true)
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "singleton"
|
|
4
|
+
|
|
5
|
+
module SleeperRb
|
|
6
|
+
module Resources
|
|
7
|
+
##
|
|
8
|
+
# The NflState resource represents the current state of the NFL (week number, year, etc) as defined by Sleeper.
|
|
9
|
+
class NflState
|
|
10
|
+
include Singleton
|
|
11
|
+
include SleeperRb::Utilities::Request
|
|
12
|
+
include SleeperRb::Utilities::Cache
|
|
13
|
+
|
|
14
|
+
##
|
|
15
|
+
# :attr_reader: week
|
|
16
|
+
|
|
17
|
+
##
|
|
18
|
+
# :attr_reader: season_type
|
|
19
|
+
|
|
20
|
+
##
|
|
21
|
+
# :attr_reader: season
|
|
22
|
+
|
|
23
|
+
##
|
|
24
|
+
# :attr_reader: league_season
|
|
25
|
+
|
|
26
|
+
##
|
|
27
|
+
# :attr_reader: season_start_date
|
|
28
|
+
|
|
29
|
+
##
|
|
30
|
+
# :attr_reader: previous_season
|
|
31
|
+
|
|
32
|
+
##
|
|
33
|
+
# :attr_reader: leg
|
|
34
|
+
|
|
35
|
+
##
|
|
36
|
+
# :attr_reader: league_create_season
|
|
37
|
+
|
|
38
|
+
##
|
|
39
|
+
# :attr_reader: display_week
|
|
40
|
+
|
|
41
|
+
cached_attr :week, :season_type, :season, :league_season, :season_start_date, :previous_season,
|
|
42
|
+
:leg, :league_create_season, :display_week
|
|
43
|
+
|
|
44
|
+
private
|
|
45
|
+
|
|
46
|
+
def retrieve_values!
|
|
47
|
+
execute_request(URI("#{BASE_URL}/state/nfl"))
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module SleeperRb
|
|
4
|
+
module Resources
|
|
5
|
+
##
|
|
6
|
+
# A specific NFL player with general information about roster position, physical attributes, team, etc.
|
|
7
|
+
class Player
|
|
8
|
+
extend SleeperRb::Utilities::Request
|
|
9
|
+
include SleeperRb::Utilities::Cache
|
|
10
|
+
|
|
11
|
+
class << self
|
|
12
|
+
##
|
|
13
|
+
# Ensuring there is one source of players so the heavy endpoint need not be called frequently.
|
|
14
|
+
#
|
|
15
|
+
# @return [{SleeperRb::Resources::PlayerArray}[rdoc-ref:SleeperRb::Resources::PlayerArray]]
|
|
16
|
+
def all
|
|
17
|
+
@all ||= PlayerArray.new(player_hashes.reduce([]) do |array, (_player_id, player_hash)|
|
|
18
|
+
array << new(player_hash)
|
|
19
|
+
end)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
##
|
|
23
|
+
# Resets the values for all players.
|
|
24
|
+
#
|
|
25
|
+
# @return [self]
|
|
26
|
+
def refresh
|
|
27
|
+
@all = nil
|
|
28
|
+
@player_hashes = nil
|
|
29
|
+
self
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def player_hashes
|
|
33
|
+
@player_hashes ||= retrieve_players!
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
private
|
|
37
|
+
|
|
38
|
+
def retrieve_players!
|
|
39
|
+
url = "#{BASE_URL}/players/nfl"
|
|
40
|
+
execute_request(url)
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
##
|
|
45
|
+
# :attr_reader: hashtag
|
|
46
|
+
|
|
47
|
+
##
|
|
48
|
+
# :attr_reader: depth_chart_position
|
|
49
|
+
|
|
50
|
+
##
|
|
51
|
+
# :attr_reader: status
|
|
52
|
+
|
|
53
|
+
##
|
|
54
|
+
# :attr_reader: sport
|
|
55
|
+
|
|
56
|
+
##
|
|
57
|
+
# :attr_reader: number
|
|
58
|
+
|
|
59
|
+
##
|
|
60
|
+
# :attr_reader: injury_start_date
|
|
61
|
+
|
|
62
|
+
##
|
|
63
|
+
# :attr_reader: weight
|
|
64
|
+
|
|
65
|
+
##
|
|
66
|
+
# :attr_reader: practice_participation
|
|
67
|
+
|
|
68
|
+
##
|
|
69
|
+
# :attr_reader: sportradar_id
|
|
70
|
+
|
|
71
|
+
##
|
|
72
|
+
# :attr_reader: team
|
|
73
|
+
|
|
74
|
+
##
|
|
75
|
+
# :attr_reader: last_name
|
|
76
|
+
|
|
77
|
+
##
|
|
78
|
+
# :attr_reader: college
|
|
79
|
+
|
|
80
|
+
##
|
|
81
|
+
# :attr_reader: fantasy_data_id
|
|
82
|
+
|
|
83
|
+
##
|
|
84
|
+
# :attr_reader: full_name
|
|
85
|
+
|
|
86
|
+
##
|
|
87
|
+
# :attr_reader: injury_status
|
|
88
|
+
|
|
89
|
+
##
|
|
90
|
+
# :attr_reader: player_id
|
|
91
|
+
|
|
92
|
+
##
|
|
93
|
+
# :attr_reader: height
|
|
94
|
+
|
|
95
|
+
##
|
|
96
|
+
# :attr_reader: age
|
|
97
|
+
|
|
98
|
+
##
|
|
99
|
+
# :attr_reader: stats_id
|
|
100
|
+
|
|
101
|
+
##
|
|
102
|
+
# :attr_reader: birth_country
|
|
103
|
+
|
|
104
|
+
##
|
|
105
|
+
# :attr_reader: espn_id
|
|
106
|
+
|
|
107
|
+
##
|
|
108
|
+
# :attr_reader: first_name
|
|
109
|
+
|
|
110
|
+
##
|
|
111
|
+
# :attr_reader: active
|
|
112
|
+
|
|
113
|
+
##
|
|
114
|
+
# :attr_reader: depth_chart_order
|
|
115
|
+
|
|
116
|
+
##
|
|
117
|
+
# :attr_reader: years_exp
|
|
118
|
+
|
|
119
|
+
##
|
|
120
|
+
# :attr_reader: rotowire_id
|
|
121
|
+
|
|
122
|
+
##
|
|
123
|
+
# :attr_reader: yahoo_id
|
|
124
|
+
|
|
125
|
+
##
|
|
126
|
+
# :attr_reader: pandascore_id
|
|
127
|
+
|
|
128
|
+
##
|
|
129
|
+
# :attr_reader: news_updated
|
|
130
|
+
|
|
131
|
+
##
|
|
132
|
+
# :attr_reader: birth_city
|
|
133
|
+
|
|
134
|
+
##
|
|
135
|
+
# :attr_reader: birth_date
|
|
136
|
+
|
|
137
|
+
##
|
|
138
|
+
# :attr_reader: injury_notes
|
|
139
|
+
|
|
140
|
+
##
|
|
141
|
+
# :attr_reader: gsis_id
|
|
142
|
+
|
|
143
|
+
##
|
|
144
|
+
# :attr_reader: birth_state
|
|
145
|
+
|
|
146
|
+
##
|
|
147
|
+
# :attr_reader: swish_id
|
|
148
|
+
|
|
149
|
+
##
|
|
150
|
+
# :attr_reader: high_school
|
|
151
|
+
|
|
152
|
+
##
|
|
153
|
+
# :attr_reader: metadata
|
|
154
|
+
|
|
155
|
+
##
|
|
156
|
+
# :attr_reader: injury_body_part
|
|
157
|
+
|
|
158
|
+
##
|
|
159
|
+
# :attr_reader: practice_description
|
|
160
|
+
|
|
161
|
+
##
|
|
162
|
+
# :method: fantasy_positions
|
|
163
|
+
# All fantasy positions for which the player is eligible.
|
|
164
|
+
#
|
|
165
|
+
# @return [Array<{SleeperRb::Utilities::RosterPosition}[rdoc-ref:SleeperRb::Utilities::RosterPosition]>]
|
|
166
|
+
|
|
167
|
+
##
|
|
168
|
+
# :method: position
|
|
169
|
+
# Primary position for the player.
|
|
170
|
+
#
|
|
171
|
+
# @return [{SleeperRb::Utilities::RosterPosition}[rdoc-ref:SleeperRb::Utilities::RosterPosition]]
|
|
172
|
+
|
|
173
|
+
cached_attr :hashtag, :depth_chart_position, :status, :sport, :number, :injury_start_date, :weight,
|
|
174
|
+
:practice_participation, :sportradar_id, :team, :last_name, :college, :fantasy_data_id, :full_name,
|
|
175
|
+
:injury_status, :player_id, :height, :age, :stats_id, :birth_country, :espn_id, :first_name, :active,
|
|
176
|
+
:depth_chart_order, :years_exp, :rotowire_id, :rotoworld_id, :yahoo_id, :pandascore_id, :news_updated,
|
|
177
|
+
:birth_city, :birth_date, :injury_notes, :gsis_id, :birth_state, :swish_id, :high_school, :metadata,
|
|
178
|
+
:injury_body_part, :practice_description,
|
|
179
|
+
fantasy_positions: ->(array) { array&.map { |pos| SleeperRb::Utilities::RosterPosition.new(pos) } },
|
|
180
|
+
position: ->(pos) { pos ? SleeperRb::Utilities::RosterPosition.new(pos) : nil }
|
|
181
|
+
|
|
182
|
+
private
|
|
183
|
+
|
|
184
|
+
def retrieve_values!
|
|
185
|
+
self.class.player_hashes[@player_id.to_sym]
|
|
186
|
+
end
|
|
187
|
+
end
|
|
188
|
+
end
|
|
189
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# frozen-string-literal: true
|
|
2
|
+
|
|
3
|
+
module SleeperRb
|
|
4
|
+
module Resources
|
|
5
|
+
##
|
|
6
|
+
# Provides methods named for each valid roster position which return a PlayerArray containing all
|
|
7
|
+
# players which match the given roster position.
|
|
8
|
+
class PlayerArray < SleeperRb::Utilities::ArrayProxy
|
|
9
|
+
SleeperRb::Utilities::RosterPosition::VALID_ROSTER_POSITIONS.each do |position|
|
|
10
|
+
define_method(position) do
|
|
11
|
+
where(position: position)
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|