stattleship-ruby 0.1.19

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 (264) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +12 -0
  3. data/.rspec +2 -0
  4. data/.rubocop.yml +263 -0
  5. data/.ruby-version +1 -0
  6. data/.travis.yml +8 -0
  7. data/CODE_OF_CONDUCT.md +13 -0
  8. data/Gemfile +15 -0
  9. data/LICENSE +1 -0
  10. data/README.md +75 -0
  11. data/Rakefile +1 -0
  12. data/bin/console +7 -0
  13. data/bin/game_log_officials +32 -0
  14. data/bin/game_logs +69 -0
  15. data/bin/games +42 -0
  16. data/bin/in_progress +19 -0
  17. data/bin/injuries +18 -0
  18. data/bin/officials +42 -0
  19. data/bin/players +45 -0
  20. data/bin/scoreboard +43 -0
  21. data/bin/setup +7 -0
  22. data/bin/stat_leaders +25 -0
  23. data/bin/team_game_logs +35 -0
  24. data/bin/teams +29 -0
  25. data/bin/top_stats +25 -0
  26. data/bin/total_player_stat +33 -0
  27. data/bin/total_team_stat +22 -0
  28. data/examples/README.md +118 -0
  29. data/examples/baseball_feats.rb +35 -0
  30. data/examples/baseball_games.rb +32 -0
  31. data/examples/baseball_player_game_logs.rb +33 -0
  32. data/examples/baseball_stat_leaders.rb +30 -0
  33. data/examples/basketball_game_logs.rb +33 -0
  34. data/examples/basketball_injuries.rb +36 -0
  35. data/examples/basketball_season_player_performance_rankings.rb +31 -0
  36. data/examples/basketball_stat_leaders.rb +40 -0
  37. data/examples/basketball_team_game_logs.rb +38 -0
  38. data/examples/basketball_top_stats.rb +43 -0
  39. data/examples/basketball_winning_streaks.rb +27 -0
  40. data/examples/bears_team_game_logs.rb +46 -0
  41. data/examples/football_feats.rb +49 -0
  42. data/examples/football_game_logs.rb +40 -0
  43. data/examples/football_players.rb +43 -0
  44. data/examples/football_stats.rb +50 -0
  45. data/examples/football_total_player_stat.rb +32 -0
  46. data/examples/hockey_games.rb +56 -0
  47. data/examples/hockey_penalties.rb +47 -0
  48. data/examples/hockey_scoring_plays.rb +55 -0
  49. data/examples/hockey_team_ranked_streaks.rb +27 -0
  50. data/examples/hockey_teams.rb +54 -0
  51. data/examples/hockey_total_team_stat.rb +32 -0
  52. data/examples/sample.env +2 -0
  53. data/lib/stattleship.rb +117 -0
  54. data/lib/stattleship/baseball_feats.rb +15 -0
  55. data/lib/stattleship/baseball_game_logs.rb +159 -0
  56. data/lib/stattleship/baseball_games.rb +15 -0
  57. data/lib/stattleship/baseball_injuries.rb +15 -0
  58. data/lib/stattleship/baseball_penalties.rb +15 -0
  59. data/lib/stattleship/baseball_players.rb +15 -0
  60. data/lib/stattleship/baseball_scoring_plays.rb +15 -0
  61. data/lib/stattleship/baseball_stat_leaders.rb +15 -0
  62. data/lib/stattleship/baseball_stats.rb +15 -0
  63. data/lib/stattleship/baseball_team_game_logs.rb +142 -0
  64. data/lib/stattleship/baseball_team_outcome_streaks.rb +15 -0
  65. data/lib/stattleship/baseball_teams.rb +15 -0
  66. data/lib/stattleship/baseball_top_stats.rb +15 -0
  67. data/lib/stattleship/baseball_total_player_stat.rb +15 -0
  68. data/lib/stattleship/baseball_total_team_stat.rb +15 -0
  69. data/lib/stattleship/basketball_feats.rb +15 -0
  70. data/lib/stattleship/basketball_game_logs.rb +111 -0
  71. data/lib/stattleship/basketball_games.rb +15 -0
  72. data/lib/stattleship/basketball_injuries.rb +15 -0
  73. data/lib/stattleship/basketball_penalties.rb +15 -0
  74. data/lib/stattleship/basketball_players.rb +15 -0
  75. data/lib/stattleship/basketball_scoring_plays.rb +15 -0
  76. data/lib/stattleship/basketball_stat_leaders.rb +15 -0
  77. data/lib/stattleship/basketball_stats.rb +15 -0
  78. data/lib/stattleship/basketball_team_game_logs.rb +113 -0
  79. data/lib/stattleship/basketball_team_outcome_streaks.rb +15 -0
  80. data/lib/stattleship/basketball_teams.rb +15 -0
  81. data/lib/stattleship/basketball_top_stats.rb +15 -0
  82. data/lib/stattleship/basketball_total_player_stat.rb +15 -0
  83. data/lib/stattleship/basketball_total_team_stat.rb +15 -0
  84. data/lib/stattleship/client/client.rb +101 -0
  85. data/lib/stattleship/client/configuration.rb +42 -0
  86. data/lib/stattleship/endpoint.rb +208 -0
  87. data/lib/stattleship/feats.rb +150 -0
  88. data/lib/stattleship/football_feats.rb +15 -0
  89. data/lib/stattleship/football_game_logs.rb +255 -0
  90. data/lib/stattleship/football_games.rb +15 -0
  91. data/lib/stattleship/football_injuries.rb +15 -0
  92. data/lib/stattleship/football_penalties.rb +15 -0
  93. data/lib/stattleship/football_players.rb +15 -0
  94. data/lib/stattleship/football_scoring_plays.rb +15 -0
  95. data/lib/stattleship/football_stat_leaders.rb +15 -0
  96. data/lib/stattleship/football_stats.rb +15 -0
  97. data/lib/stattleship/football_team_game_logs.rb +176 -0
  98. data/lib/stattleship/football_team_outcome_streaks.rb +15 -0
  99. data/lib/stattleship/football_teams.rb +15 -0
  100. data/lib/stattleship/football_top_stats.rb +15 -0
  101. data/lib/stattleship/football_total_player_stat.rb +15 -0
  102. data/lib/stattleship/football_total_team_stat.rb +15 -0
  103. data/lib/stattleship/formatters/stat_formatter.rb +28 -0
  104. data/lib/stattleship/game_logs.rb +97 -0
  105. data/lib/stattleship/games.rb +38 -0
  106. data/lib/stattleship/hockey_feats.rb +15 -0
  107. data/lib/stattleship/hockey_game_logs.rb +107 -0
  108. data/lib/stattleship/hockey_games.rb +15 -0
  109. data/lib/stattleship/hockey_injuries.rb +15 -0
  110. data/lib/stattleship/hockey_penalties.rb +32 -0
  111. data/lib/stattleship/hockey_players.rb +15 -0
  112. data/lib/stattleship/hockey_scoring_plays.rb +15 -0
  113. data/lib/stattleship/hockey_stat_leaders.rb +15 -0
  114. data/lib/stattleship/hockey_stats.rb +15 -0
  115. data/lib/stattleship/hockey_team_game_logs.rb +128 -0
  116. data/lib/stattleship/hockey_team_outcome_streaks.rb +15 -0
  117. data/lib/stattleship/hockey_teams.rb +15 -0
  118. data/lib/stattleship/hockey_top_stats.rb +15 -0
  119. data/lib/stattleship/hockey_total_player_stat.rb +15 -0
  120. data/lib/stattleship/hockey_total_team_stat.rb +15 -0
  121. data/lib/stattleship/injuries.rb +32 -0
  122. data/lib/stattleship/models.rb +19 -0
  123. data/lib/stattleship/models/game.rb +360 -0
  124. data/lib/stattleship/models/injury.rb +22 -0
  125. data/lib/stattleship/models/league.rb +35 -0
  126. data/lib/stattleship/models/official.rb +20 -0
  127. data/lib/stattleship/models/penalty.rb +133 -0
  128. data/lib/stattleship/models/player.rb +124 -0
  129. data/lib/stattleship/models/playing_position.rb +17 -0
  130. data/lib/stattleship/models/ranking.rb +96 -0
  131. data/lib/stattleship/models/scoring_play.rb +201 -0
  132. data/lib/stattleship/models/scoring_player.rb +22 -0
  133. data/lib/stattleship/models/season.rb +18 -0
  134. data/lib/stattleship/models/team.rb +78 -0
  135. data/lib/stattleship/models/team_outcome_streak.rb +88 -0
  136. data/lib/stattleship/models/venue.rb +32 -0
  137. data/lib/stattleship/params.rb +102 -0
  138. data/lib/stattleship/params/baseball_feats_params.rb +6 -0
  139. data/lib/stattleship/params/baseball_game_logs_params.rb +6 -0
  140. data/lib/stattleship/params/baseball_games_params.rb +6 -0
  141. data/lib/stattleship/params/baseball_injuries_params.rb +6 -0
  142. data/lib/stattleship/params/baseball_penalties_params.rb +6 -0
  143. data/lib/stattleship/params/baseball_players_params.rb +6 -0
  144. data/lib/stattleship/params/baseball_scoring_plays_params.rb +6 -0
  145. data/lib/stattleship/params/baseball_stat_leaders_params.rb +6 -0
  146. data/lib/stattleship/params/baseball_stats_params.rb +6 -0
  147. data/lib/stattleship/params/baseball_team_game_logs_params.rb +6 -0
  148. data/lib/stattleship/params/baseball_team_outcome_streaks_params.rb +9 -0
  149. data/lib/stattleship/params/baseball_team_stats_params.rb +10 -0
  150. data/lib/stattleship/params/baseball_teams_params.rb +6 -0
  151. data/lib/stattleship/params/baseball_top_stats_params.rb +6 -0
  152. data/lib/stattleship/params/baseball_total_player_stat_params.rb +6 -0
  153. data/lib/stattleship/params/baseball_total_team_stat_params.rb +11 -0
  154. data/lib/stattleship/params/basketball_feats_params.rb +6 -0
  155. data/lib/stattleship/params/basketball_game_logs_params.rb +6 -0
  156. data/lib/stattleship/params/basketball_games_params.rb +6 -0
  157. data/lib/stattleship/params/basketball_injuries_params.rb +6 -0
  158. data/lib/stattleship/params/basketball_penalties_params.rb +6 -0
  159. data/lib/stattleship/params/basketball_players_params.rb +6 -0
  160. data/lib/stattleship/params/basketball_scoring_plays_params.rb +6 -0
  161. data/lib/stattleship/params/basketball_stat_leaders_params.rb +6 -0
  162. data/lib/stattleship/params/basketball_stats_params.rb +6 -0
  163. data/lib/stattleship/params/basketball_team_game_logs_params.rb +6 -0
  164. data/lib/stattleship/params/basketball_team_outcome_streaks_params.rb +9 -0
  165. data/lib/stattleship/params/basketball_team_stats_params.rb +10 -0
  166. data/lib/stattleship/params/basketball_teams_params.rb +6 -0
  167. data/lib/stattleship/params/basketball_top_stats_params.rb +6 -0
  168. data/lib/stattleship/params/basketball_total_player_stat_params.rb +6 -0
  169. data/lib/stattleship/params/basketball_total_team_stat_params.rb +11 -0
  170. data/lib/stattleship/params/feats_params.rb +23 -0
  171. data/lib/stattleship/params/football_feats_params.rb +6 -0
  172. data/lib/stattleship/params/football_game_logs_params.rb +11 -0
  173. data/lib/stattleship/params/football_games_params.rb +6 -0
  174. data/lib/stattleship/params/football_injuries_params.rb +6 -0
  175. data/lib/stattleship/params/football_penalties_params.rb +6 -0
  176. data/lib/stattleship/params/football_players_params.rb +6 -0
  177. data/lib/stattleship/params/football_scoring_plays_params.rb +6 -0
  178. data/lib/stattleship/params/football_stat_leaders_params.rb +6 -0
  179. data/lib/stattleship/params/football_stats_params.rb +6 -0
  180. data/lib/stattleship/params/football_team_game_logs_params.rb +6 -0
  181. data/lib/stattleship/params/football_team_outcome_streaks_params.rb +9 -0
  182. data/lib/stattleship/params/football_team_stats_params.rb +10 -0
  183. data/lib/stattleship/params/football_teams_params.rb +6 -0
  184. data/lib/stattleship/params/football_top_stats_params.rb +6 -0
  185. data/lib/stattleship/params/football_total_player_stat_params.rb +6 -0
  186. data/lib/stattleship/params/football_total_team_stat_params.rb +11 -0
  187. data/lib/stattleship/params/game_logs_params.rb +13 -0
  188. data/lib/stattleship/params/game_time_params.rb +17 -0
  189. data/lib/stattleship/params/games_params.rb +13 -0
  190. data/lib/stattleship/params/hockey_feats_params.rb +6 -0
  191. data/lib/stattleship/params/hockey_game_logs_params.rb +6 -0
  192. data/lib/stattleship/params/hockey_games_params.rb +6 -0
  193. data/lib/stattleship/params/hockey_injuries_params.rb +6 -0
  194. data/lib/stattleship/params/hockey_penalties_params.rb +6 -0
  195. data/lib/stattleship/params/hockey_players_params.rb +6 -0
  196. data/lib/stattleship/params/hockey_scoring_plays_params.rb +6 -0
  197. data/lib/stattleship/params/hockey_stat_leaders_params.rb +6 -0
  198. data/lib/stattleship/params/hockey_stats_params.rb +6 -0
  199. data/lib/stattleship/params/hockey_team_game_logs_params.rb +6 -0
  200. data/lib/stattleship/params/hockey_team_outcome_streaks_params.rb +9 -0
  201. data/lib/stattleship/params/hockey_team_stats_params.rb +10 -0
  202. data/lib/stattleship/params/hockey_teams_params.rb +6 -0
  203. data/lib/stattleship/params/hockey_top_stats_params.rb +6 -0
  204. data/lib/stattleship/params/hockey_total_player_stat_params.rb +6 -0
  205. data/lib/stattleship/params/hockey_total_team_stat_params.rb +11 -0
  206. data/lib/stattleship/params/injuries_params.rb +11 -0
  207. data/lib/stattleship/params/penalties_params.rb +11 -0
  208. data/lib/stattleship/params/players_params.rb +12 -0
  209. data/lib/stattleship/params/query_params.rb +50 -0
  210. data/lib/stattleship/params/rankings_params.rb +15 -0
  211. data/lib/stattleship/params/scoring_plays_params.rb +12 -0
  212. data/lib/stattleship/params/stat_leaders_params.rb +17 -0
  213. data/lib/stattleship/params/stats_params.rb +17 -0
  214. data/lib/stattleship/params/team_game_logs_params.rb +12 -0
  215. data/lib/stattleship/params/team_outcome_streaks_params.rb +24 -0
  216. data/lib/stattleship/params/teams_params.rb +9 -0
  217. data/lib/stattleship/params/top_stats_params.rb +17 -0
  218. data/lib/stattleship/params/total_player_stat_params.rb +17 -0
  219. data/lib/stattleship/params/total_team_stat_params.rb +18 -0
  220. data/lib/stattleship/penalties.rb +26 -0
  221. data/lib/stattleship/players.rb +26 -0
  222. data/lib/stattleship/rankings.rb +51 -0
  223. data/lib/stattleship/scoring_plays.rb +30 -0
  224. data/lib/stattleship/stat_leaders.rb +43 -0
  225. data/lib/stattleship/stats.rb +76 -0
  226. data/lib/stattleship/team_game_logs.rb +90 -0
  227. data/lib/stattleship/team_outcome_streaks.rb +28 -0
  228. data/lib/stattleship/teams.rb +20 -0
  229. data/lib/stattleship/top_stats.rb +58 -0
  230. data/lib/stattleship/total_player_stat.rb +37 -0
  231. data/lib/stattleship/total_team_stat.rb +30 -0
  232. data/lib/stattleship/validators.rb +33 -0
  233. data/lib/stattleship/validators/base_validator.rb +117 -0
  234. data/lib/stattleship/validators/birth_date_validator.rb +9 -0
  235. data/lib/stattleship/validators/current_validator.rb +9 -0
  236. data/lib/stattleship/validators/feat_validator.rb +9 -0
  237. data/lib/stattleship/validators/game_id_validator.rb +9 -0
  238. data/lib/stattleship/validators/interval_type_validator.rb +9 -0
  239. data/lib/stattleship/validators/level_up_validator.rb +9 -0
  240. data/lib/stattleship/validators/level_validator.rb +16 -0
  241. data/lib/stattleship/validators/on_validator.rb +9 -0
  242. data/lib/stattleship/validators/outcome_validator.rb +9 -0
  243. data/lib/stattleship/validators/page_validator.rb +9 -0
  244. data/lib/stattleship/validators/penalty_validator.rb +9 -0
  245. data/lib/stattleship/validators/per_page_validator.rb +9 -0
  246. data/lib/stattleship/validators/place_validator.rb +9 -0
  247. data/lib/stattleship/validators/player_id_validator.rb +9 -0
  248. data/lib/stattleship/validators/rank_validator.rb +9 -0
  249. data/lib/stattleship/validators/ranked_validator.rb +9 -0
  250. data/lib/stattleship/validators/ranking_validator.rb +9 -0
  251. data/lib/stattleship/validators/scoring_method_validator.rb +9 -0
  252. data/lib/stattleship/validators/scoring_type_validator.rb +9 -0
  253. data/lib/stattleship/validators/season_id_validator.rb +9 -0
  254. data/lib/stattleship/validators/since_validator.rb +9 -0
  255. data/lib/stattleship/validators/stat_validator.rb +23 -0
  256. data/lib/stattleship/validators/status_validator.rb +16 -0
  257. data/lib/stattleship/validators/streak_length_validator.rb +9 -0
  258. data/lib/stattleship/validators/team_id_validator.rb +9 -0
  259. data/lib/stattleship/validators/type_validator.rb +9 -0
  260. data/lib/stattleship/validators/week_validator.rb +9 -0
  261. data/lib/stattleship/version.rb +5 -0
  262. data/sample.env +1 -0
  263. data/stattleship-ruby.gemspec +33 -0
  264. metadata +503 -0
@@ -0,0 +1,38 @@
1
+ module Stattleship
2
+ class Games < Stattleship::Endpoint
3
+ def populate
4
+ games.each do |game|
5
+ populate_game(game)
6
+ end
7
+ end
8
+ end
9
+
10
+ module GamesRepresenter
11
+ include Roar::JSON
12
+ include Stattleship::Models
13
+
14
+ collection :away_teams, extend: TeamRepresenter,
15
+ class: Team
16
+
17
+ collection :home_teams, extend: TeamRepresenter,
18
+ class: Team
19
+
20
+ collection :winning_teams, extend: TeamRepresenter,
21
+ class: Team
22
+
23
+ collection :games, extend: GameRepresenter,
24
+ class: Game
25
+
26
+ collection :leagues, extend: LeagueRepresenter,
27
+ class: League
28
+
29
+ collection :officials, extend: OfficialRepresenter,
30
+ class: Official
31
+
32
+ collection :seasons, extend: SeasonRepresenter,
33
+ class: Season
34
+
35
+ collection :venues, extend: VenueRepresenter,
36
+ class: Venue
37
+ end
38
+ end
@@ -0,0 +1,15 @@
1
+ module Stattleship
2
+ class HockeyFeats < Stattleship::Feats
3
+ HOCKEY_FEATS = 'hockey/nhl/feats'.freeze
4
+
5
+ def self.fetch(params:)
6
+ super(path: HOCKEY_FEATS,
7
+ params: params)
8
+ end
9
+ end
10
+
11
+ module HockeyFeatsRepresenter
12
+ include Roar::JSON
13
+ include FeatsRepresenter
14
+ end
15
+ end
@@ -0,0 +1,107 @@
1
+ module Stattleship
2
+ class HockeyGameLog < Stattleship::GameLog
3
+ def stats
4
+ [
5
+ "#{goals.to_i} G",
6
+ "#{assists.to_i} A",
7
+ "#{points.to_i} P",
8
+ "#{shots.to_i} S",
9
+ "#{hits.to_i} H",
10
+ "#{goals_power_play.to_i} PPG"
11
+ ]
12
+ end
13
+
14
+ def to_sentence
15
+ "#{player_name} #{stats.join(', ')} (#{game.name})"
16
+ end
17
+ end
18
+
19
+ class HockeyGameLogs < Stattleship::GameLogs
20
+ HOCKEY_GAME_LOGS = 'hockey/nhl/game_logs'.freeze
21
+
22
+ def self.fetch(params:)
23
+ super(path: HOCKEY_GAME_LOGS,
24
+ params: params)
25
+ end
26
+ end
27
+
28
+ module HockeyGameLogsRepresenter
29
+ include Roar::JSON
30
+ include Roar::Coercion
31
+ include Stattleship::GameLogsRepresenter
32
+ include Virtus.model
33
+
34
+ collection :game_logs, class: Stattleship::HockeyGameLog do
35
+ [
36
+ :game_played,
37
+ :game_started,
38
+ :home_team_outcome,
39
+ :away_team_outcome,
40
+ :team_outcome,
41
+ :opponent_outcome,
42
+ ].each do |attribute|
43
+ property attribute
44
+ end
45
+
46
+ [
47
+ :away_team_score,
48
+ :home_team_score,
49
+ :team_score,
50
+ :opponent_score,
51
+ :assists,
52
+ :blocked_shots,
53
+ :faceoffs_won,
54
+ :faceoffs_lost,
55
+ :goals,
56
+ :goals_power_play,
57
+ :goals_short_handed,
58
+ :hits,
59
+ :penalty_minutes,
60
+ :plus_minus,
61
+ :points,
62
+ :points_power_play,
63
+ :shifts,
64
+ :shots,
65
+ :takeaways,
66
+ :time_on_ice_secs,
67
+ :time_on_ice_even_strength_secs,
68
+ :time_on_ice_power_play_secs,
69
+ :time_on_ice_short_handed_secs,
70
+ :assists_power_play,
71
+ :assists_short_handed,
72
+ :game_winning_goals,
73
+ :goals_overtime,
74
+ :goals_period_1,
75
+ :goals_period_2,
76
+ :goals_period_3,
77
+ :points_short_handed,
78
+ :shootouts_attempted,
79
+ :shootouts_scored
80
+ ].each do |attribute|
81
+ property attribute, type: Integer
82
+ end
83
+
84
+ [
85
+ :faceoff_win_percentage,
86
+ :shooting_pct,
87
+ ].each do |attribute|
88
+ property attribute, type: BigDecimal
89
+ end
90
+
91
+ [
92
+ :is_home_team,
93
+ :is_away_team,
94
+ ].each do |attribute|
95
+ property attribute, type: Boolean, default: false
96
+ end
97
+
98
+ [
99
+ :player_id,
100
+ :game_id,
101
+ :team_id
102
+ ].each do |relationship|
103
+ property relationship
104
+ end
105
+ end
106
+ end
107
+ end
@@ -0,0 +1,15 @@
1
+ module Stattleship
2
+ class HockeyGames < Stattleship::Games
3
+ HOCKEY_GAMES = 'hockey/nhl/games'.freeze
4
+
5
+ def self.fetch(params:)
6
+ super(path: HOCKEY_GAMES,
7
+ params: params)
8
+ end
9
+ end
10
+
11
+ module HockeyGamesRepresenter
12
+ include Roar::JSON
13
+ include GamesRepresenter
14
+ end
15
+ end
@@ -0,0 +1,15 @@
1
+ module Stattleship
2
+ class HockeyInjuries < Stattleship::Injuries
3
+ HOCKEY_INJURIES = 'hockey/nhl/injuries'.freeze
4
+
5
+ def self.fetch(params:)
6
+ super(path: HOCKEY_INJURIES,
7
+ params: params)
8
+ end
9
+ end
10
+
11
+ module HockeyInjuriesRepresenter
12
+ include Roar::JSON
13
+ include InjuriesRepresenter
14
+ end
15
+ end
@@ -0,0 +1,32 @@
1
+ module Stattleship
2
+ class HockeyPenalty < Stattleship::Models::Penalty
3
+ def stats
4
+ [
5
+ "#{goals.to_i} G",
6
+ "#{assists.to_i} A",
7
+ "#{points.to_i} P",
8
+ "#{shots.to_i} S",
9
+ "#{hits.to_i} H",
10
+ "#{goals_power_play.to_i} PPG"
11
+ ]
12
+ end
13
+
14
+ def to_sentence
15
+ "#{player_name} #{stats.join(', ')} (#{game.name})"
16
+ end
17
+ end
18
+
19
+ class HockeyPenalties < Stattleship::Penalties
20
+ HOCKEY_PENALTIES = 'hockey/nhl/penalties'.freeze
21
+
22
+ def self.fetch(params:)
23
+ super(path: HOCKEY_PENALTIES,
24
+ params: params)
25
+ end
26
+ end
27
+
28
+ module HockeyPenaltiesRepresenter
29
+ include Roar::JSON
30
+ include PenaltiesRepresenter
31
+ end
32
+ end
@@ -0,0 +1,15 @@
1
+ module Stattleship
2
+ class HockeyPlayers < Stattleship::Players
3
+ HOCKEY_PLAYERS = 'hockey/nhl/players'.freeze
4
+
5
+ def self.fetch(params:)
6
+ super(path: HOCKEY_PLAYERS,
7
+ params: params)
8
+ end
9
+ end
10
+
11
+ module HockeyPlayersRepresenter
12
+ include Roar::JSON
13
+ include PlayersRepresenter
14
+ end
15
+ end
@@ -0,0 +1,15 @@
1
+ module Stattleship
2
+ class HockeyScoringPlays < Stattleship::ScoringPlays
3
+ HOCKEY_SCORING_PLAYS = 'hockey/nhl/scoring_plays'.freeze
4
+
5
+ def self.fetch(params:)
6
+ super(path: HOCKEY_SCORING_PLAYS,
7
+ params: params)
8
+ end
9
+ end
10
+
11
+ module HockeyScoringPlaysRepresenter
12
+ include Roar::JSON
13
+ include ScoringPlaysRepresenter
14
+ end
15
+ end
@@ -0,0 +1,15 @@
1
+ module Stattleship
2
+ class HockeyStatLeaders < Stattleship::StatLeaders
3
+ HOCKEY_STAT_LEADERS = 'hockey/nhl/stat_leaders'.freeze
4
+
5
+ def self.fetch(params:)
6
+ super(path: HOCKEY_STAT_LEADERS,
7
+ params: params)
8
+ end
9
+ end
10
+
11
+ module HockeyStatLeadersRepresenter
12
+ include Roar::JSON
13
+ include StatLeadersRepresenter
14
+ end
15
+ end
@@ -0,0 +1,15 @@
1
+ module Stattleship
2
+ class HockeyStats < Stattleship::Stats
3
+ HOCKEY_STATS = 'hockey/nhl/stats'.freeze
4
+
5
+ def self.fetch(params:)
6
+ super(path: HOCKEY_STATS,
7
+ params: params)
8
+ end
9
+ end
10
+
11
+ module HockeyStatsRepresenter
12
+ include Roar::JSON
13
+ include StatsRepresenter
14
+ end
15
+ end
@@ -0,0 +1,128 @@
1
+ module Stattleship
2
+ class HockeyTeamGameLog < Stattleship::TeamGameLog
3
+ def stats
4
+ [
5
+ "#{StatFormatter.format(value: goals)} G",
6
+ "#{StatFormatter.format(value: penalty_minutes)} PIM",
7
+ "#{StatFormatter.format(value: player_points)} P",
8
+ "#{StatFormatter.format(value: shots)} S"
9
+ ]
10
+ end
11
+
12
+ def to_sentence
13
+ "#{team_name} #{stats.join(', ')} (#{game.name})"
14
+ end
15
+ end
16
+
17
+ class HockeyTeamGameLogs < Stattleship::TeamGameLogs
18
+ HOCKEY_TEAM_GAME_LOGS = 'hockey/nhl/team_game_logs'.freeze
19
+
20
+ def self.fetch(params:)
21
+ super(path: HOCKEY_TEAM_GAME_LOGS,
22
+ params: params)
23
+ end
24
+ end
25
+
26
+ module HockeyTeamGameLogsRepresenter
27
+ include Roar::JSON
28
+ include Roar::Coercion
29
+ include Stattleship::TeamGameLogsRepresenter
30
+ include Virtus.model
31
+
32
+ collection :team_game_logs, class: Stattleship::HockeyTeamGameLog do
33
+
34
+ [
35
+ :home_team_outcome,
36
+ :away_team_outcome,
37
+ :team_outcome,
38
+ :opponent_outcome,
39
+ ].each do |attribute|
40
+ property attribute
41
+ end
42
+
43
+
44
+ property :goalie_goals_against_average, type: BigDecimal
45
+
46
+ [
47
+ :home_team_score,
48
+ :away_team_score,
49
+ :team_score,
50
+ :opponent_score,
51
+ :faceoff_total_losses,
52
+ :faceoff_total_wins,
53
+ :games_lost,
54
+ :games_lost_overtime,
55
+ :games_lost_shootout,
56
+ :games_tied,
57
+ :games_won,
58
+ :games_won_overtime,
59
+ :games_won_shootout,
60
+ :goalie_assists,
61
+ :goalie_goals_against,
62
+ :goalie_goals_scored,
63
+ :goalie_hits,
64
+ :goalie_penalty_minutes,
65
+ :goalie_points_power_play,
66
+ :goalie_points_short_handed,
67
+ :goalie_saves,
68
+ :goalie_shots_against,
69
+ :goalie_time_on_ice_power_play_secs,
70
+ :goalie_time_on_ice_secs,
71
+ :goalie_time_on_ice_short_handed_secs,
72
+ :goals,
73
+ :goals_empty_net,
74
+ :goals_overtime,
75
+ :goals_overtime_1,
76
+ :goals_overtime_2,
77
+ :goals_overtime_3,
78
+ :goals_period_1,
79
+ :goals_period_2,
80
+ :goals_period_3,
81
+ :goals_power_play,
82
+ :goals_shootout,
83
+ :penalties,
84
+ :penalty_minutes,
85
+ :player_assists,
86
+ :player_blocked_shots,
87
+ :player_game_winning_goals,
88
+ :player_hits,
89
+ :player_plus_minus,
90
+ :player_points,
91
+ :player_points_power_play,
92
+ :player_points_short_handed,
93
+ :player_time_on_ice_power_play_secs,
94
+ :player_time_on_ice_short_handed_secs,
95
+ :power_plays,
96
+ :shootouts_attempted,
97
+ :shootouts_scored,
98
+ :shots,
99
+ :shots_overtime,
100
+ :shots_overtime_1,
101
+ :shots_overtime_2,
102
+ :shots_overtime_3,
103
+ :shots_period_1,
104
+ :shots_period_2,
105
+ :shots_period_3,
106
+ :shutouts,
107
+ :total_play_time,
108
+ ].each do |attribute|
109
+ property attribute, type: Integer
110
+ end
111
+
112
+ [
113
+ :is_home_team,
114
+ :is_away_team,
115
+ ].each do |attribute|
116
+ property attribute, type: Boolean, default: false
117
+ end
118
+
119
+ [
120
+ :game_id,
121
+ :opponent_id,
122
+ :team_id,
123
+ ].each do |relationship|
124
+ property relationship
125
+ end
126
+ end
127
+ end
128
+ end
@@ -0,0 +1,15 @@
1
+ module Stattleship
2
+ class HockeyTeamOutcomeStreaks < Stattleship::TeamOutcomeStreaks
3
+ HOCKEY_TEAM_OUTCOME_STREAKS = 'hockey/nhl/team_outcome_streaks'.freeze
4
+
5
+ def self.fetch(params:)
6
+ super(path: HOCKEY_TEAM_OUTCOME_STREAKS,
7
+ params: params)
8
+ end
9
+ end
10
+
11
+ module HockeyTeamOutcomeStreaksRepresenter
12
+ include Roar::JSON
13
+ include TeamOutcomeStreaksRepresenter
14
+ end
15
+ end
@@ -0,0 +1,15 @@
1
+ module Stattleship
2
+ class HockeyTeams < Stattleship::Teams
3
+ HOCKEY_TEAMS = 'hockey/nhl/teams'.freeze
4
+
5
+ def self.fetch(params:)
6
+ super(path: HOCKEY_TEAMS,
7
+ params: params)
8
+ end
9
+ end
10
+
11
+ module HockeyTeamsRepresenter
12
+ include Roar::JSON
13
+ include TeamsRepresenter
14
+ end
15
+ end