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,27 @@
1
+ # Set your STATTLESHIP_ACCESS_TOKEN from https://www.stattleship.com in the examples/.env file
2
+
3
+ require 'dotenv'
4
+ Dotenv.load
5
+
6
+ dir = File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib'))
7
+ require File.join(dir, 'stattleship')
8
+ require 'pp'
9
+
10
+ # Construct params for the fetch
11
+ query_params = Stattleship::Params::HockeyTeamOutcomeStreaksParams.new
12
+ query_params.team_id = 'nhl-was'
13
+ query_params.ranked = 3
14
+
15
+ # fetch will automatically traverse the paginated response links
16
+ streaks = Stattleship::HockeyTeamOutcomeStreaks.fetch(params: query_params).sort_by(&:rank)
17
+
18
+ # The Capitals first longest streak of the 2015-2016 NHL season is 9 games (win from Dec 12-Dec 31)
19
+ # The Capitals second longest streak of the 2015-2016 NHL season is 6 games (win from Nov 21-Dec 05)
20
+ # The Capitals third longest streak of the 2015-2016 NHL season is 5 games (win from Oct 15-Oct 28)
21
+ # The Capitals third longest streak of the 2015-2016 NHL season is 5 games (win from Jan 05-Jan 16)
22
+ # The Capitals third longest streak of the 2015-2016 NHL season is 5 games (win from Feb 04-Feb 13)
23
+
24
+ # or, individual attributes
25
+ streaks.each do |streak|
26
+ puts "The #{streak.team.nickname} #{streak.rank.ordinalize} longest streak of the #{streak.season.name} #{streak.league.abbreviation} season is #{streak.streak_length} games (#{streak.outcome} from #{streak.started_on_short_date}-#{streak.ended_on_short_date})"
27
+ end
@@ -0,0 +1,54 @@
1
+ # Set your STATTLESHIP_ACCESS_TOKEN from https://www.stattleship.com in the examples/.env file
2
+
3
+ require 'dotenv'
4
+ Dotenv.load
5
+
6
+ dir = File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib'))
7
+ require File.join(dir, 'stattleship')
8
+ require 'pp'
9
+
10
+ # Construct params for the fetch
11
+ query_params = Stattleship::Params::HockeyTeamsParams.new
12
+
13
+ # fetch will automatically traverse the paginated response links
14
+ teams = Stattleship::HockeyTeams.fetch(params: query_params)
15
+
16
+ # the populated object
17
+ pp teams.first
18
+
19
+ # or, individual attributes
20
+ teams.each do |team|
21
+ pp "#{team.nickname} #{team.colors.join(' ')}"
22
+ end
23
+
24
+ # "Ducks 000000 91764B EF5225"
25
+ # "Coyotes 841F27 000000 EFE1C6"
26
+ # "Bruins 000000 FFC422"
27
+ # "Sabres 002E62 FDBB2F AEB6B9"
28
+ # "Flames E03A3E FFC758 000000"
29
+ # "Hurricanes E03A3E 000000 8E8E90"
30
+ # "Blackhawks E3263A 000000"
31
+ # "Avalanche 8B2942 01548A 000000 A9B0B8"
32
+ # "Blue Jackets 00285C E03A3E A9B0B8"
33
+ # "Stars 006A4E 000000 C0C0C0"
34
+ # "Red Wings EC1F26"
35
+ # "Oilers 003777 E66A20"
36
+ # "Panthers C8213F 002E5F D59C05"
37
+ # "Kings 000000 AFB7BA"
38
+ # "Wild 025736 BF2B37 EFB410 EEE3C7"
39
+ # "Canadiens BF2F38 213770"
40
+ # "Predators FDBB2F 002E62"
41
+ # "Devils E03A3E 000000"
42
+ # "Islanders 00529B F57D31"
43
+ # "Rangers 0161AB E6393F"
44
+ # "Senators E4173E 000000 D69F0F"
45
+ # "Flyers F47940 000000"
46
+ # "Penguins 000000 D1BD80"
47
+ # "Sharks 05535D F38F20 000000"
48
+ # "Blues 0546A0 FFC325 101F48"
49
+ # "Lightning 013E7D 000000 C0C0C0"
50
+ # "Maple Leafs 003777"
51
+ # "Canucks 07346F 047A4A A8A9AD"
52
+ # "Capitals CF132B 00214E 000000"
53
+ # "Jets 002E62 0168AB A8A9AD"
54
+ # ...
@@ -0,0 +1,32 @@
1
+ # Set your STATTLESHIP_ACCESS_TOKEN from https://www.stattleship.com in the examples/.env file
2
+
3
+ require 'dotenv'
4
+ Dotenv.load
5
+
6
+ dir = File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib'))
7
+ require File.join(dir, 'stattleship')
8
+ require 'pp'
9
+
10
+ # Construct params for the fetch
11
+ query_params = Stattleship::Params::HockeyTotalTeamStatParams.new
12
+
13
+ # use a slug, typically 'league-team_abbreviation'
14
+ # we know that you'll want the `hockey_team_stat' type, so no need to specify that
15
+ query_params.team_id = 'nhl-mon'
16
+ query_params.stat = 'goals_period_3'
17
+
18
+ # fetch will automatically traverse the paginated response links
19
+ total_stat = Stattleship::HockeyTotalTeamStat.fetch(params: query_params)
20
+
21
+ # the populated object
22
+ pp total_stat
23
+
24
+ # can access friendly helpers
25
+ pp total_stat.to_sentence
26
+
27
+ # "The Montreal Canadiens have 46 goals_period_3"
28
+
29
+ # or, individual attributes
30
+ pp "#{total_stat.team.nickname} who play in #{total_stat.team.location} had #{total_stat.total.to_i} goals in the 3rd period"
31
+
32
+ # "Canadiens who play in Montreal had 46 goals in the 3rd period"
@@ -0,0 +1,2 @@
1
+ # Get your STATTLESHIP_ACCESS_TOKEN from https://www.stattleship.com
2
+ STATTLESHIP_ACCESS_TOKEN=YOUR_TOKEN
@@ -0,0 +1,117 @@
1
+ require 'addressable/uri'
2
+ require 'addressable/template'
3
+ require 'bigdecimal'
4
+ require 'bigdecimal/util'
5
+ require 'date'
6
+ require 'dotenv'
7
+ require 'link_header'
8
+ require 'net/https'
9
+ require 'ordinalize'
10
+ require 'ostruct'
11
+ require 'roar/coercion'
12
+ require 'roar/json'
13
+
14
+ require 'stattleship/version'
15
+
16
+ require 'stattleship/client/configuration'
17
+ require 'stattleship/client/client'
18
+
19
+ require 'stattleship/endpoint'
20
+ require 'stattleship/formatters/stat_formatter'
21
+ require 'stattleship/models'
22
+ require 'stattleship/params'
23
+ require 'stattleship/validators'
24
+
25
+ require 'stattleship/feats'
26
+ require 'stattleship/baseball_feats'
27
+ require 'stattleship/football_feats'
28
+ require 'stattleship/basketball_feats'
29
+ require 'stattleship/hockey_feats'
30
+
31
+ require 'stattleship/games'
32
+ require 'stattleship/basketball_games'
33
+ require 'stattleship/football_games'
34
+ require 'stattleship/hockey_games'
35
+ require 'stattleship/baseball_games'
36
+
37
+ require 'stattleship/game_logs'
38
+ require 'stattleship/basketball_game_logs'
39
+ require 'stattleship/football_game_logs'
40
+ require 'stattleship/hockey_game_logs'
41
+ require 'stattleship/baseball_game_logs'
42
+
43
+ require 'stattleship/injuries'
44
+ require 'stattleship/basketball_injuries'
45
+ require 'stattleship/football_injuries'
46
+ require 'stattleship/hockey_injuries'
47
+ require 'stattleship/baseball_injuries'
48
+
49
+ require 'stattleship/penalties'
50
+ require 'stattleship/basketball_penalties'
51
+ require 'stattleship/football_penalties'
52
+ require 'stattleship/hockey_penalties'
53
+ require 'stattleship/baseball_penalties'
54
+
55
+ require 'stattleship/players'
56
+ require 'stattleship/basketball_players'
57
+ require 'stattleship/football_players'
58
+ require 'stattleship/hockey_players'
59
+ require 'stattleship/baseball_players'
60
+
61
+ require 'stattleship/rankings'
62
+
63
+ require 'stattleship/scoring_plays'
64
+ require 'stattleship/basketball_scoring_plays'
65
+ require 'stattleship/football_scoring_plays'
66
+ require 'stattleship/hockey_scoring_plays'
67
+ require 'stattleship/baseball_scoring_plays'
68
+
69
+ require 'stattleship/stat_leaders'
70
+ require 'stattleship/basketball_stat_leaders'
71
+ require 'stattleship/football_stat_leaders'
72
+ require 'stattleship/hockey_stat_leaders'
73
+ require 'stattleship/baseball_stat_leaders'
74
+
75
+ require 'stattleship/stats'
76
+ require 'stattleship/basketball_stats'
77
+ require 'stattleship/football_stats'
78
+ require 'stattleship/hockey_stats'
79
+ require 'stattleship/baseball_stats'
80
+
81
+ require 'stattleship/teams'
82
+ require 'stattleship/basketball_teams'
83
+ require 'stattleship/football_teams'
84
+ require 'stattleship/hockey_teams'
85
+ require 'stattleship/baseball_teams'
86
+
87
+ require 'stattleship/team_game_logs'
88
+ require 'stattleship/basketball_team_game_logs'
89
+ require 'stattleship/football_team_game_logs'
90
+ require 'stattleship/hockey_team_game_logs'
91
+ require 'stattleship/baseball_team_game_logs'
92
+
93
+ require 'stattleship/team_outcome_streaks'
94
+ require 'stattleship/basketball_team_outcome_streaks'
95
+ require 'stattleship/football_team_outcome_streaks'
96
+ require 'stattleship/hockey_team_outcome_streaks'
97
+ require 'stattleship/baseball_team_outcome_streaks'
98
+
99
+ require 'stattleship/total_player_stat'
100
+ require 'stattleship/basketball_total_player_stat'
101
+ require 'stattleship/football_total_player_stat'
102
+ require 'stattleship/hockey_total_player_stat'
103
+ require 'stattleship/baseball_total_player_stat'
104
+
105
+ require 'stattleship/total_team_stat'
106
+ require 'stattleship/basketball_total_team_stat'
107
+ require 'stattleship/football_total_team_stat'
108
+ require 'stattleship/hockey_total_team_stat'
109
+ require 'stattleship/baseball_total_team_stat'
110
+
111
+ require 'stattleship/top_stats'
112
+ require 'stattleship/basketball_top_stats'
113
+ require 'stattleship/football_top_stats'
114
+ require 'stattleship/hockey_top_stats'
115
+ require 'stattleship/baseball_top_stats'
116
+
117
+ Dotenv.load
@@ -0,0 +1,15 @@
1
+ module Stattleship
2
+ class BaseballFeats < Stattleship::Feats
3
+ BASEBALL_FEATS = 'baseball/mlb/feats'.freeze
4
+
5
+ def self.fetch(params:)
6
+ super(path: BASEBALL_FEATS,
7
+ params: params)
8
+ end
9
+ end
10
+
11
+ module BaseballFeatsRepresenter
12
+ include Roar::JSON
13
+ include FeatsRepresenter
14
+ end
15
+ end
@@ -0,0 +1,159 @@
1
+ module Stattleship
2
+ class BaseballGameLog < Stattleship::GameLog
3
+ def stats
4
+ if player.pitcher?
5
+ [
6
+ "#{pitcher_strikeouts.to_i} K",
7
+ "#{pitches_thrown.to_i} thrown",
8
+ "#{strikes_thrown.to_i} K thrown",
9
+ "#{pitcher_runs.to_i} R"
10
+ ]
11
+ else
12
+ [
13
+ "#{hits.to_i} H",
14
+ "#{runs.to_i} R",
15
+ "#{runs_batted_in.to_i} RBI",
16
+ "#{fielding_errors.to_i} E"
17
+ ]
18
+ end
19
+ end
20
+
21
+ def to_sentence
22
+ "#{player_name} #{stats.join(', ')} (#{game.name})"
23
+ end
24
+ end
25
+
26
+ class BaseballGameLogs < Stattleship::GameLogs
27
+ BASEBALL_GAME_LOGS = 'baseball/mlb/game_logs'.freeze
28
+
29
+ def self.fetch(params:)
30
+ super(path: BASEBALL_GAME_LOGS,
31
+ params: params)
32
+ end
33
+ end
34
+
35
+ module BaseballGameLogsRepresenter
36
+ include Roar::JSON
37
+ include Roar::Coercion
38
+ include Stattleship::GameLogsRepresenter
39
+ include Virtus.model
40
+
41
+ collection :game_logs, class: Stattleship::BaseballGameLog do
42
+
43
+ [
44
+ :away_team_outcome,
45
+ :home_team_outcome,
46
+ :team_outcome,
47
+ :opponent_outcome,
48
+ ].each do |attribute|
49
+ property attribute
50
+ end
51
+
52
+ [
53
+ :batting_average,
54
+ :earned_run_average,
55
+ :inherited_runner_scoring_percentage,
56
+ :innings_pitched,
57
+ :on_base_percentage,
58
+ :on_base_plus_slugging,
59
+ :slugging_percentage,
60
+ :strike_percentage,
61
+ :whip,
62
+ ].each do |attribute|
63
+ property attribute, type: BigDecimal
64
+ end
65
+
66
+ [
67
+ :at_bats,
68
+ :away_team_score,
69
+ :balks,
70
+ :balls_thrown,
71
+ :batters_faced,
72
+ :blown_saves,
73
+ :catcher_interferences,
74
+ :catcher_stealers_allowed,
75
+ :catcher_stealers_caught,
76
+ :caught_stealing,
77
+ :complete_games,
78
+ :doubles,
79
+ :extra_base_hits,
80
+ :fielding_errors,
81
+ :fly_ball_outs,
82
+ :game_played,
83
+ :game_started,
84
+ :ground_ball_outs,
85
+ :grounded_into_double_plays,
86
+ :hit_by_pitch,
87
+ :hits,
88
+ :holds,
89
+ :home_runs,
90
+ :home_team_score,
91
+ :inherited_runners,
92
+ :inherited_runners_scored,
93
+ :intentional_walks,
94
+ :intentional_walks_against,
95
+ :left_on_base,
96
+ :losses,
97
+ :no_decisions,
98
+ :opponent_score,
99
+ :outfield_assists,
100
+ :outs_pitched,
101
+ :passed_balls,
102
+ :pickoffs,
103
+ :pitcher_caught_stealing,
104
+ :pitcher_earned_runs,
105
+ :pitcher_fielding_errors,
106
+ :pitcher_games_played,
107
+ :pitcher_games_started,
108
+ :pitcher_hit_by_pitch,
109
+ :pitcher_hits,
110
+ :pitcher_home_runs,
111
+ :pitcher_intentional_walks,
112
+ :pitcher_runs,
113
+ :pitcher_sacrifice_flys,
114
+ :pitcher_sacrifice_hits,
115
+ :pitcher_stolen_bases,
116
+ :pitcher_strikeouts,
117
+ :pitcher_walks,
118
+ :pitches_thrown,
119
+ :quality_starts,
120
+ :rlisp_two_out,
121
+ :runs,
122
+ :runs_batted_in,
123
+ :sacrifice_flys,
124
+ :sacrifice_hits,
125
+ :saves,
126
+ :shutouts,
127
+ :singles,
128
+ :starting_pitches_thrown,
129
+ :stolen_bases,
130
+ :strikeouts,
131
+ :strikes_thrown,
132
+ :team_score,
133
+ :total_bases,
134
+ :triples,
135
+ :two_out_rbi,
136
+ :walks,
137
+ :wild_pitches,
138
+ :wins,
139
+ ].each do |attribute|
140
+ property attribute, type: Integer
141
+ end
142
+
143
+ [
144
+ :is_home_team,
145
+ :is_away_team,
146
+ ].each do |attribute|
147
+ property attribute, type: Boolean, default: false
148
+ end
149
+
150
+ [
151
+ :player_id,
152
+ :game_id,
153
+ :team_id
154
+ ].each do |relationship|
155
+ property relationship
156
+ end
157
+ end
158
+ end
159
+ end
@@ -0,0 +1,15 @@
1
+ module Stattleship
2
+ class BaseballGames < Stattleship::Games
3
+ BASEBALL_GAMES = 'baseball/mlb/games'.freeze
4
+
5
+ def self.fetch(params:)
6
+ super(path: BASEBALL_GAMES,
7
+ params: params)
8
+ end
9
+ end
10
+
11
+ module BaseballGamesRepresenter
12
+ include Roar::JSON
13
+ include GamesRepresenter
14
+ end
15
+ end
@@ -0,0 +1,15 @@
1
+ module Stattleship
2
+ class BaseballInjuries < Stattleship::Injuries
3
+ BASEBALL_INJURIES = 'baseball/mlb/injuries'.freeze
4
+
5
+ def self.fetch(params:)
6
+ super(path: BASEBALL_INJURIES,
7
+ params: params)
8
+ end
9
+ end
10
+
11
+ module BaseballInjuriesRepresenter
12
+ include Roar::JSON
13
+ include InjuriesRepresenter
14
+ end
15
+ end