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,15 @@
1
+ module Stattleship
2
+ class FootballPenalties < Stattleship::Penalties
3
+ FOOTBALL_PENALTIES = 'football/nfl/penalties'.freeze
4
+
5
+ def self.fetch(params:)
6
+ super(path: FOOTBALL_PENALTIES,
7
+ params: params)
8
+ end
9
+ end
10
+
11
+ module FootballPenaltiesRepresenter
12
+ include Roar::JSON
13
+ include PenaltiesRepresenter
14
+ end
15
+ end
@@ -0,0 +1,15 @@
1
+ module Stattleship
2
+ class FootballPlayers < Stattleship::Players
3
+ FOOTBALL_PLAYERS = 'football/nfl/players'.freeze
4
+
5
+ def self.fetch(params:)
6
+ super(path: FOOTBALL_PLAYERS,
7
+ params: params)
8
+ end
9
+ end
10
+
11
+ module FootballPlayersRepresenter
12
+ include Roar::JSON
13
+ include PlayersRepresenter
14
+ end
15
+ end
@@ -0,0 +1,15 @@
1
+ module Stattleship
2
+ class FootballScoringPlays < Stattleship::ScoringPlays
3
+ FOOTBALL_SCORING_PLAYS = 'football/nfl/scoring_plays'.freeze
4
+
5
+ def self.fetch(params:)
6
+ super(path: FOOTBALL_SCORING_PLAYS,
7
+ params: params)
8
+ end
9
+ end
10
+
11
+ module FootballScoringPlaysRepresenter
12
+ include Roar::JSON
13
+ include ScoringPlaysRepresenter
14
+ end
15
+ end
@@ -0,0 +1,15 @@
1
+ module Stattleship
2
+ class FootballStatLeaders < Stattleship::StatLeaders
3
+ FOOTBALL_STAT_LEADERS = 'football/nfl/stat_leaders'.freeze
4
+
5
+ def self.fetch(params:)
6
+ super(path: FOOTBALL_STAT_LEADERS,
7
+ params: params)
8
+ end
9
+ end
10
+
11
+ module FootballStatLeadersRepresenter
12
+ include Roar::JSON
13
+ include StatLeadersRepresenter
14
+ end
15
+ end
@@ -0,0 +1,15 @@
1
+ module Stattleship
2
+ class FootballStats < Stattleship::Stats
3
+ FOOTBALL_STATS = 'football/nfl/stats'.freeze
4
+
5
+ def self.fetch(params:)
6
+ super(path: FOOTBALL_STATS,
7
+ params: params)
8
+ end
9
+ end
10
+
11
+ module FootballStatsRepresenter
12
+ include Roar::JSON
13
+ include StatsRepresenter
14
+ end
15
+ end
@@ -0,0 +1,176 @@
1
+ module Stattleship
2
+ class FootballTeamGameLog < Stattleship::TeamGameLog
3
+ def stats
4
+ [
5
+ "#{StatFormatter.format(value: team_score)} score",
6
+ "#{StatFormatter.format(value: passing_touchdowns)} Pass TD",
7
+ "#{StatFormatter.format(value: rushing_touchdowns)} Rush TD",
8
+ "#{StatFormatter.format(value: passer_rating, precision: 5)} rating"
9
+ ]
10
+ end
11
+
12
+ def to_sentence
13
+ "#{team_name} #{stats.join(', ')} (#{game.name})"
14
+ end
15
+ end
16
+
17
+ class FootballTeamGameLogs < Stattleship::TeamGameLogs
18
+ FOOTBALL_TEAM_GAME_LOGS = 'football/nfl/team_game_logs'.freeze
19
+
20
+ def self.fetch(params:)
21
+ super(path: FOOTBALL_TEAM_GAME_LOGS,
22
+ params: params)
23
+ end
24
+ end
25
+
26
+ module FootballTeamGameLogsRepresenter
27
+ include Roar::JSON
28
+ include Roar::Coercion
29
+ include Stattleship::TeamGameLogsRepresenter
30
+ include Virtus.model
31
+
32
+ collection :team_game_logs, class: Stattleship::FootballTeamGameLog do
33
+
34
+ [
35
+ :away_team_outcome,
36
+ :home_team_outcome,
37
+ :team_outcome,
38
+ :opponent_outcome,
39
+ ].each do |attribute|
40
+ property attribute
41
+ end
42
+
43
+ [
44
+ :passer_rating,
45
+ :punting_net_yards_avg,
46
+ ].each do |attribute|
47
+ property attribute, type: BigDecimal
48
+ end
49
+
50
+ [
51
+ :home_team_score,
52
+ :away_team_score,
53
+ :team_score,
54
+ :opponent_score,
55
+ :extra_point_kicks_attempted,
56
+ :extra_point_kicks_blocked,
57
+ :extra_point_kicks_succeeded,
58
+ :extra_point_passes_attempted,
59
+ :extra_point_passes_succeeded,
60
+ :extra_point_rushes_attempted,
61
+ :extra_point_rushes_succeeded,
62
+ :field_goals_attempted,
63
+ :field_goals_blocked,
64
+ :field_goals_succeeded,
65
+ :field_goals_succeeded_longest_yards,
66
+ :fourth_downs_attempted,
67
+ :fourth_downs_succeeded,
68
+ :fumble_touchdowns,
69
+ :fumbles,
70
+ :fumbles_lost,
71
+ :fumbles_recovered_defense,
72
+ :fumbles_recovered_offense,
73
+ :games_lost,
74
+ :games_played,
75
+ :games_tied,
76
+ :games_won,
77
+ :goal_to_go_attempted,
78
+ :goal_to_go_succeeded,
79
+ :interception_return_longest_yards,
80
+ :interception_return_yards,
81
+ :interception_returns,
82
+ :interception_touchdowns,
83
+ :kickoff_return_longest_yards,
84
+ :kickoff_return_touchdowns,
85
+ :kickoff_return_yards,
86
+ :kickoff_returns,
87
+ :kickoff_touchbacks,
88
+ :kickoffs,
89
+ :kickoffs_in_end_zone,
90
+ :other_touchdowns,
91
+ :passing_first_downs,
92
+ :passing_gross_yards,
93
+ :passing_longest_yards,
94
+ :passing_net_yards,
95
+ :passing_plays_attempted,
96
+ :passing_plays_completed,
97
+ :passing_plays_intercepted,
98
+ :passing_plays_sacked,
99
+ :passing_sacked_yards,
100
+ :passing_touchdowns,
101
+ :penalties,
102
+ :penalty_first_downs,
103
+ :penalty_yards,
104
+ :points,
105
+ :points_overtime,
106
+ :points_quarter_1,
107
+ :points_quarter_2,
108
+ :points_quarter_3,
109
+ :points_quarter_4,
110
+ :points_overtime_1,
111
+ :points_overtime_2,
112
+ :points_overtime_3,
113
+ :points_overtime_4,
114
+ :points_overtime_5,
115
+ :points_overtime_6,
116
+ :points_overtime_7,
117
+ :points_overtime_8,
118
+ :points_overtime_9,
119
+ :points_overtime_10,
120
+ :punt_blocks,
121
+ :punt_return_faircatches,
122
+ :punt_return_longest_yards,
123
+ :punt_return_touchdowns,
124
+ :punt_return_yards,
125
+ :punt_returns,
126
+ :punting_gross_yards,
127
+ :punting_inside_twenty,
128
+ :punting_longest_gross_yards,
129
+ :punting_longest_net_yards,
130
+ :punting_longest_yards,
131
+ :punting_net_yards,
132
+ :punting_plays,
133
+ :punting_plays_blocked,
134
+ :receiving_longest_yards,
135
+ :red_zone_scores_attempted,
136
+ :red_zone_scores_succeeded,
137
+ :rushing_first_downs,
138
+ :rushing_gross_yards,
139
+ :rushing_longest_yards,
140
+ :rushing_losses,
141
+ :rushing_lost_yards,
142
+ :rushing_net_yards,
143
+ :rushing_plays,
144
+ :rushing_touchdowns,
145
+ :safeties,
146
+ :third_downs_attempted,
147
+ :third_downs_succeeded,
148
+ :time_of_possession_secs,
149
+ :time_of_possession_secs_overtime,
150
+ :time_of_possession_secs_quarter_1,
151
+ :time_of_possession_secs_quarter_2,
152
+ :time_of_possession_secs_quarter_3,
153
+ :time_of_possession_secs_quarter_4,
154
+ :total_first_downs,
155
+ :total_touchdowns,
156
+ ].each do |attribute|
157
+ property attribute, type: Integer
158
+ end
159
+
160
+ [
161
+ :is_home_team,
162
+ :is_away_team,
163
+ ].each do |attribute|
164
+ property attribute, type: Boolean, default: false
165
+ end
166
+
167
+ [
168
+ :game_id,
169
+ :opponent_id,
170
+ :team_id,
171
+ ].each do |relationship|
172
+ property relationship
173
+ end
174
+ end
175
+ end
176
+ end
@@ -0,0 +1,15 @@
1
+ module Stattleship
2
+ class FootballTeamOutcomeStreaks < Stattleship::TeamOutcomeStreaks
3
+ FOOTBALL_TEAM_OUTCOME_STREAKS = 'football/nfl/team_outcome_streaks'.freeze
4
+
5
+ def self.fetch(params:)
6
+ super(path: FOOTBALL_TEAM_OUTCOME_STREAKS,
7
+ params: params)
8
+ end
9
+ end
10
+
11
+ module FootballTeamOutcomeStreaksRepresenter
12
+ include Roar::JSON
13
+ include TeamOutcomeStreaksRepresenter
14
+ end
15
+ end
@@ -0,0 +1,15 @@
1
+ module Stattleship
2
+ class FootballTeams < Stattleship::Teams
3
+ FOOTBALL_TEAMS = 'football/nfl/teams'.freeze
4
+
5
+ def self.fetch(params:)
6
+ super(path: FOOTBALL_TEAMS,
7
+ params: params)
8
+ end
9
+ end
10
+
11
+ module FootballTeamsRepresenter
12
+ include Roar::JSON
13
+ include TeamsRepresenter
14
+ end
15
+ end
@@ -0,0 +1,15 @@
1
+ module Stattleship
2
+ class FootballTopStats < Stattleship::TopStats
3
+ FOOTBALL_TOP_STATS = 'football/nfl/top_stats'.freeze
4
+
5
+ def self.fetch(params:)
6
+ super(path: FOOTBALL_TOP_STATS,
7
+ params: params)
8
+ end
9
+ end
10
+
11
+ module FootballTopStatsRepresenter
12
+ include Roar::JSON
13
+ include TopStatsRepresenter
14
+ end
15
+ end
@@ -0,0 +1,15 @@
1
+ module Stattleship
2
+ class FootballTotalPlayerStat < Stattleship::TotalPlayerStat
3
+ FOOTBALL_TOTAL_PLAYER_STAT = 'football/nfl/total_stats'.freeze
4
+
5
+ def self.fetch(params:)
6
+ super(path: FOOTBALL_TOTAL_PLAYER_STAT,
7
+ params: params)
8
+ end
9
+ end
10
+
11
+ module FootballTotalPlayerStatRepresenter
12
+ include Roar::JSON
13
+ include TotalPlayerStatRepresenter
14
+ end
15
+ end
@@ -0,0 +1,15 @@
1
+ module Stattleship
2
+ class FootballTotalTeamStat < Stattleship::TotalTeamStat
3
+ FOOTBALL_TOTAL_TEAM_STAT = 'football/nfl/total_stats'.freeze
4
+
5
+ def self.fetch(params:)
6
+ super(path: FOOTBALL_TOTAL_TEAM_STAT,
7
+ params: params)
8
+ end
9
+ end
10
+
11
+ module FootballTotalTeamStatRepresenter
12
+ include Roar::JSON
13
+ include TotalTeamStatRepresenter
14
+ end
15
+ end
@@ -0,0 +1,28 @@
1
+ module Stattleship
2
+ class StatFormatter
3
+ def self.format(value:, precision: 0)
4
+ if value
5
+ value.to_d.to_f.round(precision)
6
+ else
7
+ ''
8
+ end
9
+ end
10
+
11
+ def self.stat(stat_name:, value:)
12
+ if stat_name.nil? || value.nil?
13
+ return ''
14
+ end
15
+
16
+ if stat_name.end_with?('average') ||
17
+ stat_name.end_with?('avg') ||
18
+ stat_name.end_with?('pct') ||
19
+ stat_name.end_with?('percentage')
20
+ self.format(value: value, precision: 3)
21
+ elsif stat_name.end_with?('rating')
22
+ self.format(value: value, precision: 5)
23
+ else
24
+ self.format(value: value)
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,97 @@
1
+ module Stattleship
2
+ class GameLog < OpenStruct
3
+ def city
4
+ venue.city
5
+ end
6
+
7
+ def league_name
8
+ league.name
9
+ end
10
+
11
+ def league_abbreviation
12
+ league.abbreviation
13
+ end
14
+
15
+ def player_name
16
+ player.name
17
+ end
18
+
19
+ def opponent_name
20
+ opponent.name
21
+ end
22
+
23
+ def opponent_full_name
24
+ opponent.full_name
25
+ end
26
+
27
+ def scoreline
28
+ game.scoreline
29
+ end
30
+
31
+ def team_name
32
+ team.name
33
+ end
34
+
35
+ def team_full_name
36
+ team.full_name
37
+ end
38
+
39
+ def venue
40
+ game.venue
41
+ end
42
+ end
43
+
44
+ class GameLogs < Stattleship::Endpoint
45
+ def populate
46
+ game_logs.each do |game_log|
47
+ populate_games(game_log)
48
+
49
+ games.each do |game|
50
+ populate_game(game)
51
+ end
52
+
53
+ populate_players(game_log)
54
+ populate_player_teams(game_log)
55
+ populate_opponents(game_log)
56
+ end
57
+ end
58
+ end
59
+
60
+ module GameLogsRepresenter
61
+ include Roar::JSON
62
+ include Stattleship::Models
63
+
64
+ collection :away_teams, extend: TeamRepresenter,
65
+ class: Team
66
+
67
+ collection :home_teams, extend: TeamRepresenter,
68
+ class: Team
69
+
70
+ collection :winning_teams, extend: TeamRepresenter,
71
+ class: Team
72
+
73
+ collection :games, extend: GameRepresenter,
74
+ class: Game
75
+
76
+ collection :leagues, extend: LeagueRepresenter,
77
+ class: League
78
+
79
+ collection :officials, extend: OfficialRepresenter,
80
+ class: Official
81
+
82
+ collection :opponents, extend: TeamRepresenter,
83
+ class: Team
84
+
85
+ collection :players, extend: PlayerRepresenter,
86
+ class: Player
87
+
88
+ collection :seasons, extend: SeasonRepresenter,
89
+ class: Season
90
+
91
+ collection :teams, extend: TeamRepresenter,
92
+ class: Team
93
+
94
+ collection :venues, extend: VenueRepresenter,
95
+ class: Venue
96
+ end
97
+ end