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.
Files changed (140) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +15 -0
  3. data/.rspec +3 -0
  4. data/.rubocop.yml +18 -0
  5. data/.travis.yml +8 -0
  6. data/CHANGELOG.md +9 -0
  7. data/CODE_OF_CONDUCT.md +84 -0
  8. data/Gemfile +14 -0
  9. data/Gemfile.lock +91 -0
  10. data/LICENSE.txt +21 -0
  11. data/README.md +92 -0
  12. data/Rakefile +24 -0
  13. data/bin/console +15 -0
  14. data/bin/setup +8 -0
  15. data/docs/SleeperRb/BadRequest.html +106 -0
  16. data/docs/SleeperRb/Client.html +354 -0
  17. data/docs/SleeperRb/NotFound.html +106 -0
  18. data/docs/SleeperRb/RateLimitExceeded.html +106 -0
  19. data/docs/SleeperRb/Resources/Avatar.html +231 -0
  20. data/docs/SleeperRb/Resources/Draft/Metadata.html +419 -0
  21. data/docs/SleeperRb/Resources/Draft/Pick/Metadata.html +346 -0
  22. data/docs/SleeperRb/Resources/Draft/Pick.html +430 -0
  23. data/docs/SleeperRb/Resources/Draft/PickArray.html +108 -0
  24. data/docs/SleeperRb/Resources/Draft/Settings.html +361 -0
  25. data/docs/SleeperRb/Resources/Draft.html +560 -0
  26. data/docs/SleeperRb/Resources/DraftArray.html +198 -0
  27. data/docs/SleeperRb/Resources/League/Matchup.html +349 -0
  28. data/docs/SleeperRb/Resources/League/MatchupArray.html +108 -0
  29. data/docs/SleeperRb/Resources/League/Roster/Settings.html +415 -0
  30. data/docs/SleeperRb/Resources/League/Roster.html +409 -0
  31. data/docs/SleeperRb/Resources/League/RosterArray.html +108 -0
  32. data/docs/SleeperRb/Resources/League/ScoringSettings.html +808 -0
  33. data/docs/SleeperRb/Resources/League/Settings.html +648 -0
  34. data/docs/SleeperRb/Resources/League/Transaction/Metadata.html +119 -0
  35. data/docs/SleeperRb/Resources/League/Transaction/Settings.html +140 -0
  36. data/docs/SleeperRb/Resources/League/Transaction/WaiverBudget.html +292 -0
  37. data/docs/SleeperRb/Resources/League/Transaction.html +679 -0
  38. data/docs/SleeperRb/Resources/League/TransactionArray.html +272 -0
  39. data/docs/SleeperRb/Resources/League.html +688 -0
  40. data/docs/SleeperRb/Resources/LeagueArray.html +272 -0
  41. data/docs/SleeperRb/Resources/NflState.html +252 -0
  42. data/docs/SleeperRb/Resources/Player.html +860 -0
  43. data/docs/SleeperRb/Resources/PlayerArray.html +108 -0
  44. data/docs/SleeperRb/Resources/TradedPick.html +345 -0
  45. data/docs/SleeperRb/Resources/TradedPickArray.html +108 -0
  46. data/docs/SleeperRb/Resources/User/Metadata.html +140 -0
  47. data/docs/SleeperRb/Resources/User.html +406 -0
  48. data/docs/SleeperRb/Resources/UserArray.html +108 -0
  49. data/docs/SleeperRb/Resources.html +99 -0
  50. data/docs/SleeperRb/ServerError.html +106 -0
  51. data/docs/SleeperRb/Utilities/ArrayProxy.html +184 -0
  52. data/docs/SleeperRb/Utilities/Cache/ClassMethods.html +326 -0
  53. data/docs/SleeperRb/Utilities/Cache.html +253 -0
  54. data/docs/SleeperRb/Utilities/Request.html +120 -0
  55. data/docs/SleeperRb/Utilities/RosterPosition.html +239 -0
  56. data/docs/SleeperRb/Utilities.html +99 -0
  57. data/docs/SleeperRb.html +113 -0
  58. data/docs/created.rid +38 -0
  59. data/docs/css/fonts.css +167 -0
  60. data/docs/css/rdoc.css +619 -0
  61. data/docs/fonts/Lato-Light.ttf +0 -0
  62. data/docs/fonts/Lato-LightItalic.ttf +0 -0
  63. data/docs/fonts/Lato-Regular.ttf +0 -0
  64. data/docs/fonts/Lato-RegularItalic.ttf +0 -0
  65. data/docs/fonts/SourceCodePro-Bold.ttf +0 -0
  66. data/docs/fonts/SourceCodePro-Regular.ttf +0 -0
  67. data/docs/images/add.png +0 -0
  68. data/docs/images/arrow_up.png +0 -0
  69. data/docs/images/brick.png +0 -0
  70. data/docs/images/brick_link.png +0 -0
  71. data/docs/images/bug.png +0 -0
  72. data/docs/images/bullet_black.png +0 -0
  73. data/docs/images/bullet_toggle_minus.png +0 -0
  74. data/docs/images/bullet_toggle_plus.png +0 -0
  75. data/docs/images/date.png +0 -0
  76. data/docs/images/delete.png +0 -0
  77. data/docs/images/find.png +0 -0
  78. data/docs/images/loadingAnimation.gif +0 -0
  79. data/docs/images/macFFBgHack.png +0 -0
  80. data/docs/images/package.png +0 -0
  81. data/docs/images/page_green.png +0 -0
  82. data/docs/images/page_white_text.png +0 -0
  83. data/docs/images/page_white_width.png +0 -0
  84. data/docs/images/plugin.png +0 -0
  85. data/docs/images/ruby.png +0 -0
  86. data/docs/images/tag_blue.png +0 -0
  87. data/docs/images/tag_green.png +0 -0
  88. data/docs/images/transparent.png +0 -0
  89. data/docs/images/wrench.png +0 -0
  90. data/docs/images/wrench_orange.png +0 -0
  91. data/docs/images/zoom.png +0 -0
  92. data/docs/index.html +171 -0
  93. data/docs/js/darkfish.js +84 -0
  94. data/docs/js/navigation.js +105 -0
  95. data/docs/js/navigation.js.gz +0 -0
  96. data/docs/js/search.js +110 -0
  97. data/docs/js/search_index.js +1 -0
  98. data/docs/js/search_index.js.gz +0 -0
  99. data/docs/js/searcher.js +229 -0
  100. data/docs/js/searcher.js.gz +0 -0
  101. data/docs/table_of_contents.html +770 -0
  102. data/lib/sleeper_rb/client.rb +80 -0
  103. data/lib/sleeper_rb/resources/avatar.rb +43 -0
  104. data/lib/sleeper_rb/resources/draft/metadata.rb +83 -0
  105. data/lib/sleeper_rb/resources/draft/pick/metadata.rb +64 -0
  106. data/lib/sleeper_rb/resources/draft/pick.rb +85 -0
  107. data/lib/sleeper_rb/resources/draft/pick_array.rb +11 -0
  108. data/lib/sleeper_rb/resources/draft/settings.rb +73 -0
  109. data/lib/sleeper_rb/resources/draft.rb +129 -0
  110. data/lib/sleeper_rb/resources/draft_array.rb +25 -0
  111. data/lib/sleeper_rb/resources/league/matchup.rb +66 -0
  112. data/lib/sleeper_rb/resources/league/matchup_array.rb +11 -0
  113. data/lib/sleeper_rb/resources/league/roster/settings.rb +76 -0
  114. data/lib/sleeper_rb/resources/league/roster.rb +73 -0
  115. data/lib/sleeper_rb/resources/league/roster_array.rb +11 -0
  116. data/lib/sleeper_rb/resources/league/scoring_settings.rb +172 -0
  117. data/lib/sleeper_rb/resources/league/settings.rb +148 -0
  118. data/lib/sleeper_rb/resources/league/transaction/metadata.rb +22 -0
  119. data/lib/sleeper_rb/resources/league/transaction/settings.rb +22 -0
  120. data/lib/sleeper_rb/resources/league/transaction/waiver_budget.rb +52 -0
  121. data/lib/sleeper_rb/resources/league/transaction.rb +153 -0
  122. data/lib/sleeper_rb/resources/league/transaction_array.rb +43 -0
  123. data/lib/sleeper_rb/resources/league.rb +197 -0
  124. data/lib/sleeper_rb/resources/league_array.rb +41 -0
  125. data/lib/sleeper_rb/resources/nfl_state.rb +51 -0
  126. data/lib/sleeper_rb/resources/player.rb +189 -0
  127. data/lib/sleeper_rb/resources/player_array.rb +16 -0
  128. data/lib/sleeper_rb/resources/traded_pick.rb +63 -0
  129. data/lib/sleeper_rb/resources/traded_pick_array.rb +9 -0
  130. data/lib/sleeper_rb/resources/user/metadata.rb +20 -0
  131. data/lib/sleeper_rb/resources/user.rb +104 -0
  132. data/lib/sleeper_rb/resources/user_array.rb +9 -0
  133. data/lib/sleeper_rb/utilities/array_proxy.rb +47 -0
  134. data/lib/sleeper_rb/utilities/cache.rb +132 -0
  135. data/lib/sleeper_rb/utilities/request.rb +42 -0
  136. data/lib/sleeper_rb/utilities/roster_position.rb +30 -0
  137. data/lib/sleeper_rb/version.rb +5 -0
  138. data/lib/sleeper_rb.rb +15 -0
  139. data/sleeper_rb.gemspec +35 -0
  140. metadata +185 -0
@@ -0,0 +1,76 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SleeperRb
4
+ module Resources
5
+ class League
6
+ class Roster
7
+ ##
8
+ # Settings for a specific roster in a league, including W/L/D, scoring_data, and waiver info.
9
+ class Settings
10
+ include SleeperRb::Utilities::Cache
11
+
12
+ ##
13
+ # :attr_reader: wins
14
+
15
+ ##
16
+ # :attr_reader: waiver_position
17
+
18
+ ##
19
+ # :attr_reader: waiver_budget_used
20
+
21
+ ##
22
+ # :attr_reader: total_moves
23
+
24
+ ##
25
+ # :attr_reader: ties
26
+
27
+ ##
28
+ # :attr_reader: losses
29
+
30
+ ##
31
+ # :attr_reader: fpts_decimal
32
+
33
+ ##
34
+ # :attr_reader: fpts_against_decimal
35
+
36
+ ##
37
+ # :attr_reader: fpts_against
38
+
39
+ ##
40
+ # :attr_reader: fpts
41
+
42
+ cached_attr :wins, :waiver_position, :waiver_budget_used, :total_moves, :ties, :losses, :fpts_decimal,
43
+ :fpts_against_decimal, :fpts_against, :fpts
44
+
45
+ skip_refresh :all
46
+
47
+ ##
48
+ # @return [Float] All points scored by the roster
49
+ def total_points
50
+ (fpts.to_f + (fpts_decimal.to_f * 0.01)).round(2)
51
+ end
52
+
53
+ ##
54
+ # @return [Float] All points scored against the roster
55
+ def total_points_against
56
+ (fpts_against.to_f + (fpts_against_decimal.to_f * 0.01)).round(2)
57
+ end
58
+
59
+ ##
60
+ # @return [Float] Percentage of games won by the roster
61
+ def win_pct
62
+ return 0.0 unless [wins, ties, losses].any?(&:positive?)
63
+
64
+ ((wins.to_f / (wins + ties + losses)) * 100.0).round(2)
65
+ end
66
+
67
+ ##
68
+ # @return [String] Record for the roster in W - L - T format
69
+ def record_string
70
+ "#{wins} - #{losses} - #{ties}"
71
+ end
72
+ end
73
+ end
74
+ end
75
+ end
76
+ end
@@ -0,0 +1,73 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "roster/settings"
4
+
5
+ module SleeperRb
6
+ module Resources
7
+ class League
8
+ ##
9
+ # A roster belonging to a specific user in a specific league.
10
+ class Roster
11
+ include SleeperRb::Utilities::Cache
12
+
13
+ PLAYER_LAMBDA = ->(array) { PlayerArray.new(array&.map { |player_id| Player.new(player_id: player_id) }) }
14
+
15
+ ##
16
+ # :attr_reader: roster_id
17
+
18
+ ##
19
+ # :attr_reader: owner_id
20
+
21
+ ##
22
+ # :attr_reader: league_id
23
+
24
+ ##
25
+ # :method: league
26
+ # The league to which the roster belongs
27
+ #
28
+ # @return [{SleeperRb::Resources::League}[rdoc-ref:SleeperRb::Resources::League]]
29
+
30
+ ##
31
+ # :method: settings
32
+ #
33
+ # @return [{SleeperRb::Resources::League::Roster::Settings}[rdoc-ref:SleeperRb::Resources::League::Roster::Settings]]
34
+
35
+ ##
36
+ # :method: starters
37
+ # The players currently starting for this roster.
38
+ #
39
+ # @return [{SleeperRb::Resources::PlayerArray}[rdoc-ref:SleeperRb::Resources::PlayerArray]]
40
+
41
+ ##
42
+ # :method: players
43
+ # The players currently currently on the roster.
44
+ #
45
+ # @return [{SleeperRb::Resources::PlayerArray}[rdoc-ref:SleeperRb::Resources::PlayerArray]]
46
+
47
+ ##
48
+ # :method: reserve
49
+ # The players currently on the reserve for this roster.
50
+ #
51
+ # @return [{SleeperRb::Resources::PlayerArray}[rdoc-ref:SleeperRb::Resources::PlayerArray]]
52
+
53
+ cached_attr :roster_id, :owner_id, :league_id, :league,
54
+ settings: ->(settings) { Settings.new(settings) },
55
+ starters: PLAYER_LAMBDA,
56
+ players: PLAYER_LAMBDA,
57
+ reserve: PLAYER_LAMBDA
58
+
59
+ delegate(*Settings.cached_attrs.keys, to: :settings)
60
+
61
+ skip_refresh :all
62
+
63
+ ##
64
+ # :method: owner
65
+ #
66
+ # @return [{SleeperRb::Resources::User}[rdoc-ref:SleeperRb::Resources::User]]
67
+ cached_association :owner do
68
+ User.new(user_id: owner_id)
69
+ end
70
+ end
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,11 @@
1
+ # frozen-string-literal: true
2
+
3
+ module SleeperRb
4
+ module Resources
5
+ class League
6
+ ##
7
+ # Implements {SleeperRb::Utilities::ArrayProxy} and wraps Roster objects.
8
+ class RosterArray < SleeperRb::Utilities::ArrayProxy; end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,172 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SleeperRb
4
+ module Resources
5
+ class League
6
+ ##
7
+ # Scoring settings for a League instance
8
+ class ScoringSettings
9
+ include SleeperRb::Utilities::Cache
10
+
11
+ ##
12
+ # :attr_reader: pass_2pt
13
+
14
+ ##
15
+ # :attr_reader: pass_int
16
+
17
+ ##
18
+ # :attr_reader: fgmiss
19
+
20
+ ##
21
+ # :attr_reader: rec_yd
22
+
23
+ ##
24
+ # :attr_reader: xpmiss
25
+
26
+ ##
27
+ # :attr_reader: blk_kick
28
+
29
+ ##
30
+ # :attr_reader: pts_allow_7_13
31
+
32
+ ##
33
+ # :attr_reader: ff
34
+
35
+ ##
36
+ # :attr_reader: fgm_20_29
37
+
38
+ ##
39
+ # :attr_reader: fgm_30_39
40
+
41
+ ##
42
+ # :attr_reader: fgm_40_49
43
+
44
+ ##
45
+ # :attr_reader: pts_allow_1_6
46
+
47
+ ##
48
+ # :attr_reader: st_fum_rec
49
+
50
+ ##
51
+ # :attr_reader: def_st_ff
52
+
53
+ ##
54
+ # :attr_reader: st_ff
55
+
56
+ ##
57
+ # :attr_reader: pts_allow_28_34
58
+
59
+ ##
60
+ # :attr_reader: fgm_50p
61
+
62
+ ##
63
+ # :attr_reader: fum_rec
64
+
65
+ ##
66
+ # :attr_reader: def_td
67
+
68
+ ##
69
+ # :attr_reader: fgm_0_19
70
+
71
+ ##
72
+ # :attr_reader: int
73
+
74
+ ##
75
+ # :attr_reader: pts_allow_0
76
+
77
+ ##
78
+ # :attr_reader: pts_allow_21_27
79
+
80
+ ##
81
+ # :attr_reader: rec_2pt
82
+
83
+ ##
84
+ # :attr_reader: rec
85
+
86
+ ##
87
+ # :attr_reader: xpm
88
+
89
+ ##
90
+ # :attr_reader: st_d
91
+
92
+ ##
93
+ # :attr_reader: def_st_fum_rec
94
+
95
+ ##
96
+ # :attr_reader: def_st_td
97
+
98
+ ##
99
+ # :attr_reader: sack
100
+
101
+ ##
102
+ # :attr_reader: fum_rec_td
103
+
104
+ ##
105
+ # :attr_reader: rush_2pt
106
+
107
+ ##
108
+ # :attr_reader: rec_td
109
+
110
+ ##
111
+ # :attr_reader: pts_allow_35p
112
+
113
+ ##
114
+ # :attr_reader: pts_allow_14_20
115
+
116
+ ##
117
+ # :attr_reader: rush_yd
118
+
119
+ ##
120
+ # :attr_reader: pass_yd
121
+
122
+ ##
123
+ # :attr_reader: pass_td
124
+
125
+ ##
126
+ # :attr_reader: rush_td
127
+
128
+ ##
129
+ # :attr_reader: fum_lost
130
+
131
+ ##
132
+ # :attr_reader: fum
133
+
134
+ ##
135
+ # :attr_reader: safe
136
+
137
+ # rubocop:disable Naming/VariableNumber
138
+ FIELDS = %i[
139
+ pass_2pt pass_int fgmiss rec_yd xpmiss blk_kick pts_allow_7_13 ff fgm_20_29 fgm_30_39 fgm_40_49 pts_allow_1_6
140
+ st_fum_rec def_st_ff st_ff pts_allow_28_34 fgm_50p fum_rec def_td fgm_0_19 int pts_allow_0 pts_allow_21_27
141
+ rec_2pt rec xpm st_td def_st_fum_rec def_st_td sack fum_rec_td rush_2pt rec_td pts_allow_35p pts_allow_14_20
142
+ rush_yd pass_yd pass_td rush_td fum_lost fum safe
143
+ ].freeze
144
+ # rubocop:enable Naming/VariableNumber
145
+
146
+ FIELDS.each do |field|
147
+ cached_attr field => :float
148
+ end
149
+
150
+ skip_refresh :all
151
+
152
+ ##
153
+ # @return [Boolean] If league uses PPR scoring
154
+ def ppr?
155
+ rec.to_i == 1
156
+ end
157
+
158
+ ##
159
+ # @return [Boolean] If league uses Half-PPR scoring
160
+ def half_ppr?
161
+ rec > 0.0 && rec < 1.0
162
+ end
163
+
164
+ ##
165
+ # @return [Boolean] If league uses Standard (0 PPR) scoring
166
+ def standard?
167
+ rec.zero?
168
+ end
169
+ end
170
+ end
171
+ end
172
+ end
@@ -0,0 +1,148 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SleeperRb
4
+ module Resources
5
+ class League
6
+ ##
7
+ # Non-scoring settings for a League instance
8
+ class Settings
9
+ include SleeperRb::Utilities::Cache
10
+
11
+ ##
12
+ # :attr_reader: max_keepers
13
+
14
+ ##
15
+ # :attr_reader: draft_rounds
16
+
17
+ ##
18
+ # :attr_reader: trade_review_days
19
+
20
+ ##
21
+ # :attr_reader: reserve_allow_dnr
22
+
23
+ ##
24
+ # :attr_reader: capacity_override
25
+
26
+ ##
27
+ # :attr_reader: pick_trading
28
+
29
+ ##
30
+ # :attr_reader: disable_trades
31
+
32
+ ##
33
+ # :attr_reader: taxi_years
34
+
35
+ ##
36
+ # :attr_reader: taxi_allow_vets
37
+
38
+ ##
39
+ # :attr_reader: best_ball
40
+
41
+ ##
42
+ # :attr_reader: disable_adds
43
+
44
+ ##
45
+ # :attr_reader: waiver_type
46
+
47
+ ##
48
+ # :attr_reader: bench_lock
49
+
50
+ ##
51
+ # :attr_reader: reserve_allow_sus
52
+
53
+ ##
54
+ # :attr_reader: type
55
+
56
+ ##
57
+ # :attr_reader: reserve_allow_cov
58
+
59
+ ##
60
+ # :attr_reader: waiver_clear_days
61
+
62
+ ##
63
+ # :attr_reader: daily_waivers_last_ran
64
+
65
+ ##
66
+ # :attr_reader: waiver_day_of_week
67
+
68
+ ##
69
+ # :attr_reader: start_week
70
+
71
+ ##
72
+ # :attr_reader: playoff_teams
73
+
74
+ ##
75
+ # :attr_reader: num_teams
76
+
77
+ ##
78
+ # :attr_reader: reserve_slots
79
+
80
+ ##
81
+ # :attr_reader: playoff_round_type
82
+
83
+ ##
84
+ # :attr_reader: daily_waivers_hours
85
+
86
+ ##
87
+ # :attr_reader: waiver_budget
88
+
89
+ ##
90
+ # :attr_reader: reserve_allow_out
91
+
92
+ ##
93
+ # :attr_reader: offseason_adds
94
+
95
+ ##
96
+ # :attr_reader: playoff_seed_type
97
+
98
+ ##
99
+ # :attr_reader: daily_waivers
100
+
101
+ ##
102
+ # :attr_reader: playoff_week_start
103
+
104
+ ##
105
+ # :attr_reader: daily_waivers_days
106
+
107
+ ##
108
+ # :attr_reader: league_average_match
109
+
110
+ ##
111
+ # :attr_reader: leg
112
+
113
+ ##
114
+ # :attr_reader: trade_deadline
115
+
116
+ ##
117
+ # :attr_reader: reserve_allow_doubtful
118
+
119
+ ##
120
+ # :attr_reader: taxi_deadline
121
+
122
+ ##
123
+ # :attr_reader: reserve_allow_na
124
+
125
+ ##
126
+ # :attr_reader: taxi_slots
127
+
128
+ ##
129
+ # :attr_reader: playoff_type
130
+
131
+ FIELDS = %i[
132
+ max_keepers draft_rounds trade_review_days reserve_allow_dnr capacity_override taxi_years waiver_type
133
+ bench_lock type waiver_clear_days daily_waivers_last_ran waiver_day_of_week start_week playoff_teams
134
+ num_teams reserve_slots playoff_round_type daily_waivers_hour waiver_budget playoff_type taxi_slots
135
+ reserve_allow_out playoff_seed_type daily_waivers playoff_week_start daily_waivers_days taxi_deadline
136
+ league_average_match leg trade_deadline
137
+ ].freeze
138
+
139
+ cached_attr(*FIELDS, best_ball: :int_to_bool, pick_trading: :int_to_bool, disable_trades: :int_to_bool,
140
+ taxi_allow_vets: :int_to_bool, disable_adds: :int_to_bool, reserve_allow_sus: :int_to_bool,
141
+ reserve_allow_cov: :int_to_bool, offseason_adds: :int_to_bool, reserve_allow_doubtful: :int_to_bool,
142
+ reserve_allow_na: :int_to_bool)
143
+
144
+ skip_refresh :all
145
+ end
146
+ end
147
+ end
148
+ end
@@ -0,0 +1,22 @@
1
+ # frozen-string-literal: true
2
+
3
+ module SleeperRb
4
+ module Resources
5
+ class League
6
+ class Transaction
7
+ ##
8
+ # Miscellaneous information about the transaction, for example notes about why a waiver bid did not go through.
9
+ class Metadata
10
+ include SleeperRb::Utilities::Cache
11
+
12
+ # The Sleeper documentation lists this field for transactions but none of the examples show the actual
13
+ # structure of the object. This is left here for now as a placeholder to be filled in once I come across
14
+ # a transaction where the metadata is not null.
15
+ cached_attr
16
+
17
+ skip_refresh :all
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,22 @@
1
+ # frozen-string-literal: true
2
+
3
+ module SleeperRb
4
+ module Resources
5
+ class League
6
+ class Transaction
7
+ ##
8
+ # Settings for a transaction, includes information like FAAB bid amount.
9
+ class Settings
10
+ include SleeperRb::Utilities::Cache
11
+
12
+ ##
13
+ # :attr_reader: waiver_bid
14
+
15
+ cached_attr :waiver_bid
16
+
17
+ skip_refresh :all
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,52 @@
1
+ # frozen-string-literal: true
2
+
3
+ module SleeperRb
4
+ module Resources
5
+ class League
6
+ class Transaction
7
+ ##
8
+ # Represents data about a waiver budget exchange in a transaction (trade).
9
+ class WaiverBudget
10
+ include SleeperRb::Utilities::Cache
11
+
12
+ ##
13
+ # :attr_reader: sender
14
+
15
+ ##
16
+ # :attr_reader: receiver
17
+
18
+ ##
19
+ # :attr_reader: amount
20
+
21
+ ##
22
+ # :method: transaction
23
+ # The transaction to which this belongs.
24
+ #
25
+ # @return [{SleeperRb::Resources::League::Transaction}[rdoc-ref:SleeperRb::Resources::League::Transaction]]
26
+
27
+ cached_attr :sender, :receiver, :amount, :transaction
28
+
29
+ skip_refresh :all
30
+
31
+ ##
32
+ # :method: sending_roster
33
+ # Returns the roster object that sent the WaiverBudget in this transaction.
34
+ #
35
+ # @return [{SleeperRb::Resources::League::Roster}[rdoc-ref:SleeperRb::Resources::League::Roster]]
36
+ cached_association :sending_roster do
37
+ transaction.league.rosters.detect { |roster| roster.roster_id == sender }
38
+ end
39
+
40
+ ##
41
+ # :method: receiving_roster
42
+ # Returns the roster object that received the WaiverBudget in this transaction.
43
+ #
44
+ # @return [{SleeperRb::Resources::League::Roster}[rdoc-ref:SleeperRb::Resources::League::Roster]]
45
+ cached_association :receiving_roster do
46
+ transaction.league.rosters.detect { |roster| roster.roster_id == receiver }
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end