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,30 @@
1
+ module Stattleship
2
+ class TotalTeamStat < Stattleship::Endpoint
3
+ def to_sentence
4
+ "The #{team.full_name} have #{StatFormatter.stat(stat_name: stat, value: total)} #{stat}"
5
+ end
6
+
7
+ def self.fetch(path:, params:)
8
+ super.first
9
+ end
10
+
11
+ def populate
12
+ populate_teams(total_team_stat)
13
+ total_team_stat
14
+ end
15
+ end
16
+
17
+ module TotalTeamStatRepresenter
18
+ include Roar::JSON
19
+ include Roar::Coercion
20
+
21
+ property :total_team_stat, class: Stattleship::TotalTeamStat do
22
+ property :team_id
23
+ property :stat
24
+ property :total, type: BigDecimal
25
+ end
26
+
27
+ collection :teams, extend: Stattleship::Models::TeamRepresenter,
28
+ class: Stattleship::Models::Team
29
+ end
30
+ end
@@ -0,0 +1,33 @@
1
+ require 'stattleship/validators/base_validator'
2
+ require 'stattleship/validators/birth_date_validator'
3
+ require 'stattleship/validators/current_validator'
4
+ require 'stattleship/validators/feat_validator'
5
+ require 'stattleship/validators/game_id_validator'
6
+ require 'stattleship/validators/interval_type_validator'
7
+ require 'stattleship/validators/level_up_validator'
8
+ require 'stattleship/validators/level_validator'
9
+ require 'stattleship/validators/on_validator'
10
+ require 'stattleship/validators/outcome_validator'
11
+ require 'stattleship/validators/page_validator'
12
+ require 'stattleship/validators/penalty_validator'
13
+ require 'stattleship/validators/per_page_validator'
14
+ require 'stattleship/validators/place_validator'
15
+ require 'stattleship/validators/player_id_validator'
16
+ require 'stattleship/validators/rank_validator'
17
+ require 'stattleship/validators/ranked_validator'
18
+ require 'stattleship/validators/ranking_validator'
19
+ require 'stattleship/validators/scoring_method_validator'
20
+ require 'stattleship/validators/scoring_type_validator'
21
+ require 'stattleship/validators/season_id_validator'
22
+ require 'stattleship/validators/since_validator'
23
+ require 'stattleship/validators/stat_validator'
24
+ require 'stattleship/validators/status_validator'
25
+ require 'stattleship/validators/streak_length_validator'
26
+ require 'stattleship/validators/team_id_validator'
27
+ require 'stattleship/validators/type_validator'
28
+ require 'stattleship/validators/week_validator'
29
+
30
+ module Stattleship
31
+ module Validators
32
+ end
33
+ end
@@ -0,0 +1,117 @@
1
+ module Stattleship
2
+ module Validators
3
+ class BaseValidator
4
+ def initialize(key:, params:, class_name:)
5
+ @class_name = class_name
6
+ @key = key
7
+ @params = params
8
+ end
9
+
10
+ def validate
11
+ raise 'Validator subclass must implement validate method'
12
+ end
13
+
14
+ def validates_date
15
+ if value.is_a?(Date)
16
+ return
17
+ else
18
+ fail ArgumentError.new("expected #{key} to be a Date")
19
+ end
20
+ end
21
+
22
+ def validates_positive_or_zero_integer
23
+ if value.is_a?(Integer) && value >= 0
24
+ return
25
+ else
26
+ fail ArgumentError.new("expected #{key} to be an integer >= 0")
27
+ end
28
+ end
29
+
30
+ def validates_positive_integer
31
+ if value.is_a?(Integer) && value > 0
32
+ return
33
+ else
34
+ fail ArgumentError.new("expected #{key} to be an integer > 0")
35
+ end
36
+ end
37
+
38
+ def validates_league_prefix
39
+ if blank?(value)
40
+ return
41
+ elsif blank?(league_prefix)
42
+ return
43
+ else
44
+ if value.start_with?("#{league_prefix}-")
45
+ return
46
+ end
47
+ end
48
+
49
+ fail ArgumentError.
50
+ new("expected #{key} to start with '#{league_prefix}'")
51
+ end
52
+
53
+ def validates_sport_prefix
54
+ if blank?(value)
55
+ return
56
+ elsif blank?(sport_prefix)
57
+ return
58
+ else
59
+ if value.start_with?("#{sport_prefix}_")
60
+ return
61
+ end
62
+ end
63
+
64
+ fail ArgumentError.
65
+ new("expected #{key} to start with '#{sport_prefix}'")
66
+ end
67
+
68
+ private
69
+
70
+ attr_reader :class_name, :key, :params
71
+
72
+ def blank?(value)
73
+ value.to_s.strip == ''
74
+ end
75
+
76
+ def present?(value)
77
+ !blank?(value)
78
+ end
79
+
80
+ def value
81
+ params[key]
82
+ end
83
+
84
+ def query_parameter_class
85
+ class_name.split('::').last
86
+ end
87
+
88
+ def league_prefix
89
+ if query_parameter_class.start_with?('Baseball')
90
+ 'mlb'
91
+ elsif query_parameter_class.start_with?('Basketball')
92
+ 'nba'
93
+ elsif query_parameter_class.start_with?('Football')
94
+ 'nfl'
95
+ elsif query_parameter_class.start_with?('Hockey')
96
+ 'nhl'
97
+ else
98
+ ''
99
+ end
100
+ end
101
+
102
+ def sport_prefix
103
+ if query_parameter_class.start_with?('Baseball')
104
+ 'baseball'
105
+ elsif query_parameter_class.start_with?('Basketball')
106
+ 'basketball'
107
+ elsif query_parameter_class.start_with?('Football')
108
+ 'football'
109
+ elsif query_parameter_class.start_with?('Hockey')
110
+ 'hockey'
111
+ else
112
+ ''
113
+ end
114
+ end
115
+ end
116
+ end
117
+ end
@@ -0,0 +1,9 @@
1
+ module Stattleship
2
+ module Validators
3
+ class BirthDateValidator < Stattleship::Validators::BaseValidator
4
+ def validate
5
+ validates_date
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module Stattleship
2
+ module Validators
3
+ class CurrentValidator < Stattleship::Validators::BaseValidator
4
+ def validate
5
+ true
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module Stattleship
2
+ module Validators
3
+ class FeatValidator < Stattleship::Validators::BaseValidator
4
+ def validate
5
+ true
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module Stattleship
2
+ module Validators
3
+ class GameIdValidator < Stattleship::Validators::BaseValidator
4
+ def validate
5
+ validates_league_prefix
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module Stattleship
2
+ module Validators
3
+ class IntervalTypeValidator < Stattleship::Validators::BaseValidator
4
+ def validate
5
+ true
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module Stattleship
2
+ module Validators
3
+ class LevelUpValidator < Stattleship::Validators::BaseValidator
4
+ def validate
5
+ validates_positive_or_zero_integer
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,16 @@
1
+ module Stattleship
2
+ module Validators
3
+ class LevelValidator < Stattleship::Validators::BaseValidator
4
+ VALID_LEVELS = %w(typical common often rare record_tying record).freeze
5
+
6
+ def validate
7
+ if VALID_LEVELS.include?(value)
8
+ return
9
+ else
10
+ fail ArgumentError.
11
+ new("expected #{key} to be either #{VALID_LEVELS.join(', ')}")
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,9 @@
1
+ module Stattleship
2
+ module Validators
3
+ class OnValidator < Stattleship::Validators::BaseValidator
4
+ def validate
5
+ true
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module Stattleship
2
+ module Validators
3
+ class OutcomeValidator < Stattleship::Validators::BaseValidator
4
+ def validate
5
+ true
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module Stattleship
2
+ module Validators
3
+ class PageValidator < Stattleship::Validators::BaseValidator
4
+ def validate
5
+ validates_positive_integer
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module Stattleship
2
+ module Validators
3
+ class PenaltyValidator < Stattleship::Validators::BaseValidator
4
+ def validate
5
+ true
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module Stattleship
2
+ module Validators
3
+ class PerPageValidator < Stattleship::Validators::BaseValidator
4
+ def validate
5
+ validates_positive_integer
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module Stattleship
2
+ module Validators
3
+ class PlaceValidator < Stattleship::Validators::BaseValidator
4
+ def validate
5
+ validates_positive_integer
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module Stattleship
2
+ module Validators
3
+ class PlayerIdValidator < Stattleship::Validators::BaseValidator
4
+ def validate
5
+ validates_league_prefix
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module Stattleship
2
+ module Validators
3
+ class RankValidator < Stattleship::Validators::BaseValidator
4
+ def validate
5
+ validates_positive_integer
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module Stattleship
2
+ module Validators
3
+ class RankedValidator < Stattleship::Validators::BaseValidator
4
+ def validate
5
+ validates_positive_integer
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module Stattleship
2
+ module Validators
3
+ class RankingValidator < Stattleship::Validators::BaseValidator
4
+ def validate
5
+ true
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module Stattleship
2
+ module Validators
3
+ class ScoringMethodValidator < Stattleship::Validators::BaseValidator
4
+ def validate
5
+ true
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module Stattleship
2
+ module Validators
3
+ class ScoringTypeValidator < Stattleship::Validators::BaseValidator
4
+ def validate
5
+ true
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module Stattleship
2
+ module Validators
3
+ class SeasonIdValidator < Stattleship::Validators::BaseValidator
4
+ def validate
5
+ validates_league_prefix
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module Stattleship
2
+ module Validators
3
+ class SinceValidator < Stattleship::Validators::BaseValidator
4
+ def validate
5
+ true
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,23 @@
1
+ module Stattleship
2
+ module Validators
3
+ class StatValidator < Stattleship::Validators::BaseValidator
4
+ def validate
5
+ if present?(value) && present?(stat_type)
6
+ return
7
+ end
8
+
9
+ if blank?(value)
10
+ raise ArgumentError.new('expected stat')
11
+ end
12
+
13
+ raise ArgumentError.new('expected stat and type')
14
+ end
15
+
16
+ private
17
+
18
+ def stat_type
19
+ params['type']
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,16 @@
1
+ module Stattleship
2
+ module Validators
3
+ class StatusValidator < Stattleship::Validators::BaseValidator
4
+ VALID_STATUSES = %w(ended in_progress upcoming).freeze
5
+
6
+ def validate
7
+ if VALID_STATUSES.include?(value)
8
+ return
9
+ else
10
+ fail ArgumentError.
11
+ new("expected #{key} to be either #{VALID_STATUSES.join(', ')}")
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end