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,80 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "utilities/array_proxy"
4
+ require_relative "utilities/cache"
5
+ require_relative "utilities/request"
6
+ require_relative "utilities/roster_position"
7
+ require_relative "resources/avatar"
8
+ require_relative "resources/draft"
9
+ require_relative "resources/draft_array"
10
+ require_relative "resources/league"
11
+ require_relative "resources/league_array"
12
+ require_relative "resources/nfl_state"
13
+ require_relative "resources/player"
14
+ require_relative "resources/player_array"
15
+ require_relative "resources/traded_pick"
16
+ require_relative "resources/traded_pick_array"
17
+ require_relative "resources/user"
18
+ require_relative "resources/user_array"
19
+
20
+ module SleeperRb
21
+ ##
22
+ # A SleeperRb::Client instance is the interface for formulating all requests for Sleeper data.
23
+ class Client
24
+ ##
25
+ # Returns the current NflState.
26
+ #
27
+ # @return {SleeperRb::Resources::NflState}[rdoc-ref:SleeperRb::Resources::NflState] The NflState instance
28
+ def nfl_state
29
+ Resources::NflState.instance
30
+ end
31
+
32
+ ##
33
+ # Returns a user found by either username or user_id. Usernames are subject to change and are thus unstable.
34
+ #
35
+ # @param username [String] The current username
36
+ #
37
+ # @param user_id [String] The numerical user_id
38
+ #
39
+ # @return {SleeperRb::Resources::User}[rdoc-ref:SleeperRb::Resources::User]
40
+ def user(username: nil, user_id: nil)
41
+ Resources::User.new(username: username, user_id: user_id)
42
+ end
43
+
44
+ ##
45
+ # Returns an avatar found by the alphanumeric ID.
46
+ #
47
+ # @param avatar_id [String] The ID for the avatar
48
+ #
49
+ # @return {SleeperRb::Resources::Avatar}[rdoc-ref:SleeperRb::Resources::Avatar]
50
+ def avatar(avatar_id)
51
+ Resources::Avatar.new(avatar_id: avatar_id)
52
+ end
53
+
54
+ ##
55
+ # Returns a League found by the alphanumeric ID.
56
+ #
57
+ # @param league_id [String] The ID for the League
58
+ #
59
+ # @return {SleeperRb::Resources::League}[rdoc-ref:SleeperRb::Resources::League]
60
+ def league(league_id)
61
+ Resources::League.new(league_id: league_id)
62
+ end
63
+
64
+ ##
65
+ # Returns all NFL players.
66
+ #
67
+ # @return [{SleeperRb::Resources::PlayerArray}[rdoc-ref:SleeperRb::Resources::PlayerArray]]
68
+ def players
69
+ Resources::PlayerArray.new(Resources::Player.all)
70
+ end
71
+
72
+ ##
73
+ # Returns a specific Draft.
74
+ #
75
+ # @return [{SleeperRb::Resources::Draft}[rdoc-ref:SleeperRb::Resources::Draft]]
76
+ def draft(draft_id)
77
+ Resources::Draft.new(draft_id: draft_id)
78
+ end
79
+ end
80
+ end
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SleeperRb
4
+ module Resources
5
+ ##
6
+ # The Avatar class allows access to full-size or thumbnail URLs for user avatars.
7
+ class Avatar
8
+ include SleeperRb::Utilities::Request
9
+ include SleeperRb::Utilities::Cache
10
+
11
+ ##
12
+ # :attr_reader: avatar_id
13
+
14
+ ##
15
+ # :method: full_size
16
+ # Returns the full size image for the Avatar
17
+ #
18
+ # @return [Tempfile]
19
+
20
+ ##
21
+ # :method: thumbnail
22
+ # Returns the full size image for the Avatar
23
+ #
24
+ # @return [Tempfile]
25
+
26
+ cached_attr :full_size, :thumbnail, :avatar_id
27
+
28
+ private
29
+
30
+ def retrieve_values!
31
+ full_url = "#{CDN_BASE_URL}/avatars/#{avatar_id}"
32
+ full_file = download_file(full_url, "#{avatar_id}-full")
33
+ thumb_url = "#{CDN_BASE_URL}/avatars/thumbs/#{avatar_id}"
34
+ thumb_file = download_file(thumb_url, "#{avatar_id}-thumb")
35
+ {
36
+ full_size: full_file,
37
+ thumbnail: thumb_file,
38
+ avatar_id: avatar_id
39
+ }
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,83 @@
1
+ # frozen-string-literal: true
2
+
3
+ module SleeperRb
4
+ module Resources
5
+ class Draft
6
+ ##
7
+ # Metadata about a particular Draft.
8
+ class Metadata
9
+ include SleeperRb::Utilities::Cache
10
+
11
+ ##
12
+ # :attr_reader: scoring_type
13
+
14
+ ##
15
+ # :attr_reader: name
16
+
17
+ ##
18
+ # :attr_reader: description
19
+
20
+ ##
21
+ # :attr_reader: offering_user_id
22
+
23
+ ##
24
+ # :attr_reader: offering_slot
25
+
26
+ ##
27
+ # :attr_reader: nominating_user_id
28
+
29
+ ##
30
+ # :attr_reader: nominating_slot
31
+
32
+ ##
33
+ # :attr_reader: nominated_player_id
34
+
35
+ ##
36
+ # :attr_reader: hovered_player_id
37
+
38
+ ##
39
+ # :attr_reader: highest_offer
40
+
41
+ cached_attr :scoring_type, :name, :description, :offering_user_id, :offering_slot, :nominating_user_id,
42
+ :nominating_slot, :nominated_player_id, :hovered_player_id, :highest_offer
43
+
44
+ ##
45
+ # :method: offering_user
46
+ # The user who has made the most recent offer.
47
+ #
48
+ # @return [{SleeperRb::Resources::User}[rdoc-ref:SleeperRb::Resources::User]]
49
+ cached_association :offering_user do
50
+ User.new(user_id: offering_user_id)
51
+ end
52
+
53
+ ##
54
+ # :method: nominating_user
55
+ # The user who has made the most recent nomination.
56
+ #
57
+ # @return [{SleeperRb::Resources::User}[rdoc-ref:SleeperRb::Resources::User]]
58
+ cached_association :nominating_user do
59
+ User.new(user_id: nominating_user_id)
60
+ end
61
+
62
+ ##
63
+ # :method: nominated_player
64
+ # The player who is currently nominated.
65
+ #
66
+ # @return [{SleeperRb::Resources::Player}[rdoc-ref:SleeperRb::Resources::Player]]
67
+ cached_association :nominated_player do
68
+ Player.new(player_id: nominated_player_id)
69
+ end
70
+
71
+ ##
72
+ # :method: hovered_player
73
+ #
74
+ # @return [{SleeperRb::Resources::Player}[rdoc-ref:SleeperRb::Resources::Player]]
75
+ cached_association :hovered_player do
76
+ Player.new(player_id: hovered_player_id)
77
+ end
78
+
79
+ skip_refresh :all
80
+ end
81
+ end
82
+ end
83
+ end
@@ -0,0 +1,64 @@
1
+ # frozen-string-literal: true
2
+
3
+ module SleeperRb
4
+ module Resources
5
+ class Draft
6
+ class Pick
7
+ ##
8
+ # Metadata associated with a specific draft pick.
9
+ class Metadata
10
+ include SleeperRb::Utilities::Cache
11
+
12
+ ##
13
+ # :attr_reader: years_exp
14
+
15
+ ##
16
+ # :attr_reader: team
17
+
18
+ ##
19
+ # :attr_reader: status
20
+
21
+ ##
22
+ # :attr_reader: sport
23
+
24
+ ##
25
+ # :attr_reader: player_id
26
+
27
+ ##
28
+ # :attr_reader: number
29
+
30
+ ##
31
+ # :attr_reader: news_updated
32
+
33
+ ##
34
+ # :attr_reader: last_name
35
+
36
+ ##
37
+ # :attr_reader: injury_status
38
+
39
+ ##
40
+ # :attr_reader: first_name
41
+
42
+ ##
43
+ # :method: position
44
+ #
45
+ # @return [{SleeperRb::Utilities::RosterPosition}[rdoc-ref:SleeperRb::Utilities::RosterPosition]]
46
+
47
+ cached_attr :years_exp, :team, :status, :sport, :player_id, :number, :last_name, :injury_status,
48
+ :first_name, position: ->(position) { SleeperRb::Utilities::RosterPosition.new(position) },
49
+ news_updated: :timestamp
50
+
51
+ skip_refresh :all
52
+
53
+ ##
54
+ # Returns the combined first and last name.
55
+ #
56
+ # @return [String]
57
+ def full_name
58
+ [first_name, last_name].join(" ")
59
+ end
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,85 @@
1
+ # frozen-string-literal: true
2
+
3
+ require_relative "pick/metadata"
4
+
5
+ module SleeperRb
6
+ module Resources
7
+ class Draft
8
+ ##
9
+ # A pick from a given draft, containing information about the user and selected player.
10
+ class Pick
11
+ include SleeperRb::Utilities::Cache
12
+
13
+ ##
14
+ # :attr_reader: round
15
+
16
+ ##
17
+ # :attr_reader: roster_id
18
+
19
+ ##
20
+ # :attr_reader: player_id
21
+
22
+ ##
23
+ # :attr_reader: picked_by
24
+
25
+ ##
26
+ # :attr_reader: pick_no
27
+
28
+ ##
29
+ # :attr_reader: is_keeper
30
+
31
+ ##
32
+ # :attr_reader: draft_slot
33
+
34
+ ##
35
+ # :attr_reader: draft_id
36
+
37
+ ##
38
+ # :method: draft
39
+ # Returns the draft instance to which this pick belongs.
40
+ #
41
+ # @return [{SleeperRb::Resources::Draft}[rdoc-ref:SleeperRb::Resources::Draft]]
42
+
43
+ ##
44
+ # :method: metadata
45
+ # Returns the metadata for this pick.
46
+ #
47
+ # @return [{SleeperRb::resources::Draft::Pick::Metadata}[rdoc-ref:SleeperRb::resources::Draft::Pick::Metadata]]
48
+
49
+ cached_attr :round, :roster_id, :player_id, :picked_by, :pick_no, :is_keeper, :draft_slot, :draft_id, :draft,
50
+ metadata: ->(hash) { Metadata.new(hash) }
51
+
52
+ delegate(*Metadata.cached_attrs.keys, to: :metadata)
53
+
54
+ skip_refresh :all
55
+
56
+ ##
57
+ # :method: player
58
+ # Returns the player instance selected with this pick.
59
+ #
60
+ # @return [{SleeperRb::Resources::Player}[rdoc-ref:SleeperRb::Resources::Player]]
61
+ cached_association :player do
62
+ Player.new(player_id: player_id)
63
+ end
64
+
65
+ ##
66
+ # :method: roster
67
+ # Returns the roster instance to which this pick belongs.
68
+ #
69
+ # @return [{SleeperRb::Resources::League::Roster}[rdoc-ref:SleeperRb::Resources::League::Roster]]
70
+ cached_association :roster do
71
+ draft.league.rosters.detect { |roster| roster.roster_id == roster_id }
72
+ end
73
+
74
+ ##
75
+ # :method: user
76
+ # Returns the user instance to whom this pick belongs.
77
+ #
78
+ # @return [{SleeperRb::Resources::User}[rdoc-ref:SleeperRb::Resources::User]]
79
+ cached_association :user do
80
+ draft.league.users.detect { |user| user.user_id == picked_by }
81
+ end
82
+ end
83
+ end
84
+ end
85
+ end
@@ -0,0 +1,11 @@
1
+ # frozen-string-literal: true
2
+
3
+ module SleeperRb
4
+ module Resources
5
+ class Draft
6
+ ##
7
+ # Implements {SleeperRb::Utilities::ArrayProxy} and wraps Pick objects.
8
+ class PickArray < SleeperRb::Utilities::ArrayProxy; end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,73 @@
1
+ # frozen-string-literal: true
2
+
3
+ module SleeperRb
4
+ module Resources
5
+ class Draft
6
+ ##
7
+ # Settings for a given Draft.
8
+ class Settings
9
+ include SleeperRb::Utilities::Cache
10
+
11
+ ##
12
+ # :attr_reader: teams
13
+
14
+ ##
15
+ # :attr_reader: slots_wr
16
+
17
+ ##
18
+ # :attr_reader: slots_te
19
+
20
+ ##
21
+ # :attr_reader: slots_rb
22
+
23
+ ##
24
+ # :attr_reader: slots_qb
25
+
26
+ ##
27
+ # :attr_reader: slots_k
28
+
29
+ ##
30
+ # :attr_reader: slots_flex
31
+
32
+ ##
33
+ # :attr_reader: slots_def
34
+
35
+ ##
36
+ # :attr_reader: slots_dbn
37
+
38
+ ##
39
+ # :attr_reader: rounds
40
+
41
+ ##
42
+ # :attr_reader: pick_time
43
+
44
+ ##
45
+ # :attr_reader: reversal_round
46
+
47
+ ##
48
+ # :attr_reader: player_type
49
+
50
+ ##
51
+ # :attr_reader: nomination_timer
52
+
53
+ ##
54
+ # :attr_reader: enforce_position_limits
55
+
56
+ ##
57
+ # :attr_reader: cpu_autopick
58
+
59
+ ##
60
+ # :attr_reader: budget
61
+
62
+ ##
63
+ # :attr_reader: alpha_sort
64
+
65
+ cached_attr :teams, :slots_wr, :slots_te, :slots_rb, :slots_qb, :slots_k, :slots_flex, :slots_def,
66
+ :slots_bn, :rounds, :pick_timer, :reversal_round, :player_type, :nomination_timer,
67
+ :enforce_position_limits, :cpu_autopick, :budget, :alpha_sort
68
+
69
+ skip_refresh :all
70
+ end
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,129 @@
1
+ # frozen-string-literal: true
2
+
3
+ require_relative "draft/metadata"
4
+ require_relative "draft/settings"
5
+ require_relative "draft/pick"
6
+ require_relative "draft/pick_array"
7
+
8
+ module SleeperRb
9
+ module Resources
10
+ ##
11
+ # Represents a draft for a given user.
12
+ class Draft
13
+ include SleeperRb::Utilities::Cache
14
+ include SleeperRb::Utilities::Request
15
+
16
+ ##
17
+ # :attr_reader: type
18
+
19
+ ##
20
+ # :attr_reader: status
21
+
22
+ ##
23
+ # :attr_reader: start_time
24
+
25
+ ##
26
+ # :attr_reader: sport
27
+
28
+ ##
29
+ # :attr_reader: season_type
30
+
31
+ ##
32
+ # :attr_reader: season
33
+
34
+ ##
35
+ # :attr_reader: league_id
36
+
37
+ ##
38
+ # :attr_reader: league
39
+
40
+ ##
41
+ # :attr_reader: last_picked
42
+
43
+ ##
44
+ # :attr_reader: last_message_time
45
+
46
+ ##
47
+ # :attr_reader: last_message_id
48
+
49
+ ##
50
+ # :attr_reader: draft_order
51
+
52
+ ##
53
+ # :attr_reader: draft_id
54
+
55
+ ##
56
+ # :attr_reader: creators
57
+
58
+ ##
59
+ # :attr_reader: created
60
+
61
+ ##
62
+ # :method: settings
63
+ # Settings for the draft.
64
+ #
65
+ # @return [{SleeperRb::Resources::Draft::Settings}[rdoc-ref:SleeperRb::Resources::Draft::Settings]]
66
+
67
+ ##
68
+ # :method: metadata
69
+ # Metadata for the draft.
70
+ #
71
+ # @return [{SleeperRb::Resources::Draft::Metadata}[rdoc-ref:SleeperRb::Resources::Draft::Metadata]]
72
+
73
+ cached_attr :type, :status, :start_time, :sport, :season_type, :season, :league_id, :last_picked, :league,
74
+ :last_message_time, :last_message_id, :draft_order, :draft_id, :creators, :created, :slot_to_roster_id,
75
+ settings: ->(hash) { Settings.new(hash) },
76
+ metadata: ->(hash) { Metadata.new(hash) }
77
+
78
+ delegate(*Settings.cached_attrs.keys, to: :settings)
79
+ delegate(*Metadata.cached_attrs.keys, to: :metadata)
80
+
81
+ skip_refresh :all
82
+
83
+ ##
84
+ # :method: traded_picks
85
+ # All picks in the Draft that were traded.
86
+ #
87
+ # @return [{SleeperRb::Resources::TradedPickArray}[rdoc-ref:SleeperRb::Resources::TradedPickArray]]
88
+ cached_association :traded_picks do
89
+ retrieve_traded_picks!
90
+ end
91
+
92
+ ##
93
+ # :method: draft_picks
94
+ # All picks in the Draft.
95
+ #
96
+ # @return [{SleeperRb::Resources::Draft::Pick}[rdoc-ref:SleeperRb::Resources::Draft::Pick]]
97
+ cached_association :draft_picks do
98
+ retrieve_picks!
99
+ end
100
+
101
+ def auction?
102
+ type == "auction"
103
+ end
104
+
105
+ def snake?
106
+ type == "snake"
107
+ end
108
+
109
+ private
110
+
111
+ def retrieve_values!
112
+ url = "#{SleeperRb::Utilities::Request::BASE_URL}/draft/#{@draft_id}"
113
+ execute_request(url)
114
+ end
115
+
116
+ def retrieve_traded_picks!
117
+ url = "#{SleeperRb::Utilities::Request::BASE_URL}/draft/#{@draft_id}/traded_picks"
118
+ response = execute_request(url)
119
+ TradedPickArray.new(response.map { |hash| TradedPick.new(hash) })
120
+ end
121
+
122
+ def retrieve_picks!
123
+ url = "#{SleeperRb::Utilities::Request::BASE_URL}/draft/#{@draft_id}/picks"
124
+ response = execute_request(url)
125
+ PickArray.new(response.map { |hash| Pick.new(hash.merge(draft: self)) })
126
+ end
127
+ end
128
+ end
129
+ end
@@ -0,0 +1,25 @@
1
+ # frozen-string-literal: true
2
+
3
+ module SleeperRb
4
+ module Resources
5
+ ##
6
+ # Implements {SleeperRb::Utilities::ArrayProxy} and wraps Draft objects.
7
+ class DraftArray < SleeperRb::Utilities::ArrayProxy
8
+ ##
9
+ # Returns all auction drafts.
10
+ #
11
+ # @return [{SleeperRb::Resources::DraftArray}[rdoc-ref:SleeperRb::Resources::DraftArray]]
12
+ def auction
13
+ where(auction?: true)
14
+ end
15
+
16
+ ##
17
+ # Returns all snake drafts.
18
+ #
19
+ # @return [{SleeperRb::Resources::DraftArray}[rdoc-ref:SleeperRb::Resources::DraftArray]]
20
+ def snake
21
+ where(snake?: true)
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,66 @@
1
+ # frozen-string-literal: true
2
+
3
+ module SleeperRb
4
+ module Resources
5
+ class League
6
+ ##
7
+ # Represents a matchup for a specific team in a specific week. Two records with the same matchup_id are paired
8
+ # against each other.
9
+ class Matchup
10
+ include SleeperRb::Utilities::Cache
11
+
12
+ ##
13
+ # :attr_reader: starters_points
14
+
15
+ ##
16
+ # :attr_reader: roster_id
17
+
18
+ ##
19
+ # :attr_reader: points
20
+
21
+ ##
22
+ # :attr_reader: matchup_id
23
+
24
+ ##
25
+ # :attr_reader: custom_points
26
+
27
+ ##
28
+ # :method: league
29
+ #
30
+ # @return [{SleeperRb::Resources::League}[rdoc-ref:SleeperRb::Resources::League]]
31
+
32
+ ##
33
+ # :method: starters
34
+ # All players starting on the roster for this matchup.
35
+ #
36
+ # @return [{SleeperRb::Resources::Player}[rdoc-ref:SleeperRb::Resources::Player]]
37
+
38
+ ##
39
+ # :method: players
40
+ # All players on the roster for this matchup.
41
+ #
42
+ # @return [{SleeperRb::Resources::Player}[rdoc-ref:SleeperRb::Resources::Player]]
43
+
44
+ cached_attr :starters_points, :roster_id, :points, :matchup_id, :custom_points, :league,
45
+ starters: ->(array) { array&.map { |id| Player.new(player_id: id) } },
46
+ players: ->(array) { array&.map { |id| Player.new(player_id: id) } }
47
+
48
+ skip_refresh :all
49
+
50
+ ##
51
+ # :method: roster
52
+ #
53
+ # @return [{SleeperRb::Resources::League::Roster}[rdoc-ref:SleeperRb::Resources::League::Roster]]
54
+ cached_association :roster do
55
+ retrieve_roster!
56
+ end
57
+
58
+ private
59
+
60
+ def retrieve_roster!
61
+ league.rosters.detect { |roster| roster.roster_id == roster_id }
62
+ end
63
+ end
64
+ end
65
+ end
66
+ 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 Matchup objects.
8
+ class MatchupArray < SleeperRb::Utilities::ArrayProxy; end
9
+ end
10
+ end
11
+ end