nfl_data 0.0.11 → 0.1.1

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 (63) hide show
  1. checksums.yaml +5 -5
  2. data/.envrc +7 -0
  3. data/.gitignore +3 -3
  4. data/.rspec +1 -0
  5. data/.standard.yml +2 -0
  6. data/.travis.yml +6 -0
  7. data/CHANGELOG.md +11 -0
  8. data/Gemfile +1 -1
  9. data/README.md +94 -22
  10. data/Rakefile +5 -6
  11. data/bin/console +1 -1
  12. data/bin/setup +8 -0
  13. data/lib/nfl_data.rb +9 -18
  14. data/lib/nfl_data/api/player.rb +8 -26
  15. data/lib/nfl_data/api/schedule.rb +19 -0
  16. data/lib/nfl_data/api/statline.rb +8 -22
  17. data/lib/nfl_data/game.rb +5 -0
  18. data/lib/nfl_data/my_sports_feeds/client.rb +45 -0
  19. data/lib/nfl_data/my_sports_feeds/players_feed.rb +18 -0
  20. data/lib/nfl_data/my_sports_feeds/seasonal_games_feed.rb +22 -0
  21. data/lib/nfl_data/my_sports_feeds/weekly_player_gamelogs.rb +21 -0
  22. data/lib/nfl_data/parsers/player_parser.rb +21 -77
  23. data/lib/nfl_data/parsers/schedule_parser.rb +20 -0
  24. data/lib/nfl_data/parsers/statline_parser.rb +27 -71
  25. data/lib/nfl_data/player.rb +13 -0
  26. data/lib/nfl_data/schedule.rb +12 -0
  27. data/lib/nfl_data/statline.rb +20 -0
  28. data/lib/nfl_data/version.rb +1 -1
  29. data/nfl_data.gemspec +23 -22
  30. data/spec/api/player_spec.rb +24 -0
  31. data/spec/api/schedule_spec.rb +20 -0
  32. data/spec/api/statline_spec.rb +31 -0
  33. data/spec/models/game_spec.rb +15 -0
  34. data/spec/models/player_spec.rb +42 -0
  35. data/spec/models/schedule_spec.rb +17 -0
  36. data/spec/models/statline_spec.rb +63 -0
  37. data/spec/my_sports_feeds/client_spec.rb +17 -0
  38. data/spec/my_sports_feeds/players_feed_spec.rb +50 -0
  39. data/spec/my_sports_feeds/seasonal_games_feed_spec.rb +41 -0
  40. data/spec/my_sports_feeds/weekly_player_gamelogs_spec.rb +144 -0
  41. data/spec/parsers/player_parser_spec.rb +63 -0
  42. data/spec/parsers/schedule_parser_spec.rb +41 -0
  43. data/spec/parsers/statline_parser_spec.rb +68 -0
  44. data/spec/spec_helper.rb +55 -0
  45. metadata +98 -52
  46. data/.codeclimate.yml +0 -5
  47. data/.rubocop.yml +0 -2
  48. data/lib/nfl_data/api/team.rb +0 -23
  49. data/lib/nfl_data/models/player.rb +0 -20
  50. data/lib/nfl_data/models/statline.rb +0 -21
  51. data/lib/nfl_data/models/team.rb +0 -38
  52. data/lib/nfl_data/parsers/parser_helper.rb +0 -6
  53. data/lib/nfl_data/parsers/team_parser.rb +0 -94
  54. data/test/nfl_data/api/player_test.rb +0 -25
  55. data/test/nfl_data/api/statline_test.rb +0 -21
  56. data/test/nfl_data/api/team_test.rb +0 -13
  57. data/test/nfl_data/models/player_test.rb +0 -79
  58. data/test/nfl_data/models/statline_test.rb +0 -121
  59. data/test/nfl_data/models/team_test.rb +0 -43
  60. data/test/nfl_data/parsers/player_parser_test.rb +0 -86
  61. data/test/nfl_data/parsers/statline_parser_test.rb +0 -34
  62. data/test/nfl_data/parsers/team_parser_test.rb +0 -41
  63. data/test/test_helper.rb +0 -14
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.describe NflData::Parsers::ScheduleParser do
4
+ subject(:parsed) { described_class.new.parse(schedule_data: schedule_data) }
5
+
6
+ let(:schedule_data) do
7
+ [
8
+ {
9
+ "id" => 56752,
10
+ "week" => 1,
11
+ "startTime" => "2020-09-11T00:20:00.000Z",
12
+ "endedTime" => nil,
13
+ "awayTeam" => {"id" => 64, "abbreviation" => "HOU"},
14
+ "homeTeam" => {"id" => 73, "abbreviation" => "KC"},
15
+ "venue" => {"id" => 58, "name" => "Arrowhead Stadium"},
16
+ "venueAllegiance" => "HOME",
17
+ "scheduleStatus" => "NORMAL",
18
+ "originalStartTime" => nil,
19
+ "delayedOrPostponedReason" => nil,
20
+ "playedStatus" => "UNPLAYED",
21
+ "attendance" => nil,
22
+ "officials" => [],
23
+ "broadcasters" => ["NBC"],
24
+ "weather" => nil
25
+ }
26
+ ]
27
+ end
28
+
29
+ let(:game) { parsed.games.first }
30
+
31
+ it "should return a schedule" do
32
+ expect(parsed).to be_a(NflData::Schedule)
33
+ end
34
+
35
+ it "should parse the games" do
36
+ expect(game.week).to eq(1)
37
+ expect(game.away_team).to eq("HOU")
38
+ expect(game.home_team).to eq("KC")
39
+ expect(game.start_time).to eq("2020-09-11T00:20:00.000Z")
40
+ end
41
+ end
@@ -0,0 +1,68 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.describe NflData::Parsers::StatlineParser do
4
+ subject(:parsed) { described_class.new.parse(statline_data: statline_data) }
5
+
6
+ let(:statline_data) do
7
+ [
8
+ {
9
+ "game" => {
10
+ "id" => 40606
11
+ },
12
+ "player" => {
13
+ "id" => 8640
14
+ },
15
+ "stats" => {
16
+ "passing" => {
17
+ "passAttempts" => 21,
18
+ "passCompletions" => 12,
19
+ "passYards" => 134,
20
+ "passTD" => 2,
21
+ "qbRating" => 92.2
22
+ },
23
+ "rushing" => {
24
+ "rushAttempts" => 10,
25
+ "rushYards" => 60,
26
+ "rushTD" => 0
27
+ },
28
+ "receiving" => {
29
+ "receptions" => 5,
30
+ "recYards" => 30,
31
+ "recTD" => 3
32
+ },
33
+ "interceptions" => {
34
+ "interceptions" => 0
35
+ },
36
+ "fumbles" => {
37
+ "fumbles" => 1
38
+ }
39
+ }
40
+ }
41
+ ]
42
+ end
43
+
44
+ let(:statline) { parsed.first }
45
+
46
+ it "should return an array of players" do
47
+ expect(parsed).to be_a(Array)
48
+ expect(statline).to be_a(NflData::Statline)
49
+ end
50
+
51
+ it "should parse the games" do
52
+ expect(statline.rush_atts).to eq(10)
53
+ expect(statline.rush_yards).to eq(60)
54
+ expect(statline.rush_tds).to eq(0)
55
+ expect(statline.fumbles).to eq(1)
56
+ expect(statline.pass_comp).to eq(12)
57
+ expect(statline.pass_att).to eq(21)
58
+ expect(statline.pass_yards).to eq(134)
59
+ expect(statline.pass_tds).to eq(2)
60
+ expect(statline.ints).to eq(0)
61
+ expect(statline.qb_rating).to eq(92.2)
62
+ expect(statline.receptions).to eq(5)
63
+ expect(statline.rec_yards).to eq(30)
64
+ expect(statline.rec_tds).to eq(3)
65
+ expect(statline.msf_game_id).to eq(40606)
66
+ expect(statline.msf_player_id).to eq(8640)
67
+ end
68
+ end
@@ -0,0 +1,55 @@
1
+ require "nfl_data"
2
+ require "vcr"
3
+ require "rspec/resembles_json_matchers"
4
+
5
+ VCR.configure do |c|
6
+ c.cassette_library_dir = "spec/cassettes"
7
+ c.hook_into :webmock
8
+ end
9
+
10
+ RSpec.configure do |config|
11
+ config.expect_with :rspec do |expectations|
12
+ expectations.include_chain_clauses_in_custom_matcher_descriptions = true
13
+ end
14
+
15
+ config.mock_with :rspec do |mocks|
16
+ mocks.verify_partial_doubles = true
17
+ end
18
+
19
+ config.include RSpec::ResemblesJsonMatchers
20
+
21
+ config.shared_context_metadata_behavior = :apply_to_host_groups
22
+
23
+ config.filter_run_when_matching :focus
24
+
25
+ config.example_status_persistence_file_path = "spec/examples.txt"
26
+
27
+ # Limits the available syntax to the non-monkey patched syntax that is
28
+ # recommended. For more details, see:
29
+ # - http://rspec.info/blog/2012/06/rspecs-new-expectation-syntax/
30
+ # - http://www.teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/
31
+ # - http://rspec.info/blog/2014/05/notable-changes-in-rspec-3/#zero-monkey-patching-mode
32
+ config.disable_monkey_patching!
33
+
34
+ # This setting enables warnings. It's recommended, but in some cases may
35
+ # be too noisy due to issues in dependencies.
36
+ config.warnings = true
37
+
38
+ if config.files_to_run.one?
39
+ config.default_formatter = "doc"
40
+ end
41
+
42
+ config.profile_examples = 5
43
+
44
+ # Run specs in random order to surface order dependencies. If you find an
45
+ # order dependency and want to debug it, you can fix the order by providing
46
+ # the seed, which is printed after each run.
47
+ # --seed 1234
48
+ config.order = :random
49
+
50
+ # Seed global randomization in this process using the `--seed` CLI option.
51
+ # Setting this allows you to use `--seed` to deterministically reproduce
52
+ # test failures related to randomization by passing the same `--seed` value
53
+ # as the one that triggered the failure.
54
+ Kernel.srand config.seed
55
+ end
metadata CHANGED
@@ -1,152 +1,194 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nfl_data
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.11
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - thetizzo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-05-05 00:00:00.000000000 Z
11
+ date: 2020-09-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: bundler
14
+ name: rake
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.6'
19
+ version: '13.0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.6'
26
+ version: '13.0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: rake
28
+ name: rspec
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: '3.9'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '0'
40
+ version: '3.9'
41
41
  - !ruby/object:Gem::Dependency
42
- name: minitest
42
+ name: rspec-resembles_json_matchers
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 5.4.1
47
+ version: '0.9'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 5.4.1
54
+ version: '0.9'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: vcr
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 2.9.3
61
+ version: 4.0.0
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 2.9.3
68
+ version: 4.0.0
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: webmock
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 1.19.0
75
+ version: '3.8'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: 1.19.0
82
+ version: '3.8'
83
83
  - !ruby/object:Gem::Dependency
84
- name: rubocop
84
+ name: standard
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: 0.35.1
89
+ version: '0.5'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: 0.35.1
96
+ version: '0.5'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: nokogiri
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: '1.6'
103
+ version: '1.10'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '1.10'
111
+ - !ruby/object:Gem::Dependency
112
+ name: typhoeus
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '1.4'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '1.4'
125
+ - !ruby/object:Gem::Dependency
126
+ name: zeitwerk
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '2.4'
104
132
  type: :runtime
105
133
  prerelease: false
106
134
  version_requirements: !ruby/object:Gem::Requirement
107
135
  requirements:
108
136
  - - "~>"
109
137
  - !ruby/object:Gem::Version
110
- version: '1.6'
138
+ version: '2.4'
111
139
  description: Parse NFL data like a boss
112
140
  email:
113
141
  - j.m.taylor1@gmail.com
114
142
  executables:
115
143
  - console
144
+ - setup
116
145
  extensions: []
117
146
  extra_rdoc_files: []
118
147
  files:
119
- - ".codeclimate.yml"
148
+ - ".envrc"
120
149
  - ".gitignore"
121
- - ".rubocop.yml"
150
+ - ".rspec"
151
+ - ".standard.yml"
152
+ - ".travis.yml"
153
+ - CHANGELOG.md
122
154
  - Gemfile
123
155
  - LICENSE.txt
124
156
  - README.md
125
157
  - Rakefile
126
158
  - bin/console
159
+ - bin/setup
127
160
  - lib/nfl_data.rb
128
161
  - lib/nfl_data/api/player.rb
162
+ - lib/nfl_data/api/schedule.rb
129
163
  - lib/nfl_data/api/statline.rb
130
- - lib/nfl_data/api/team.rb
131
- - lib/nfl_data/models/player.rb
132
- - lib/nfl_data/models/statline.rb
133
- - lib/nfl_data/models/team.rb
134
- - lib/nfl_data/parsers/parser_helper.rb
164
+ - lib/nfl_data/game.rb
165
+ - lib/nfl_data/my_sports_feeds/client.rb
166
+ - lib/nfl_data/my_sports_feeds/players_feed.rb
167
+ - lib/nfl_data/my_sports_feeds/seasonal_games_feed.rb
168
+ - lib/nfl_data/my_sports_feeds/weekly_player_gamelogs.rb
135
169
  - lib/nfl_data/parsers/player_parser.rb
170
+ - lib/nfl_data/parsers/schedule_parser.rb
136
171
  - lib/nfl_data/parsers/statline_parser.rb
137
- - lib/nfl_data/parsers/team_parser.rb
172
+ - lib/nfl_data/player.rb
173
+ - lib/nfl_data/schedule.rb
174
+ - lib/nfl_data/statline.rb
138
175
  - lib/nfl_data/version.rb
139
176
  - nfl_data.gemspec
140
- - test/nfl_data/api/player_test.rb
141
- - test/nfl_data/api/statline_test.rb
142
- - test/nfl_data/api/team_test.rb
143
- - test/nfl_data/models/player_test.rb
144
- - test/nfl_data/models/statline_test.rb
145
- - test/nfl_data/models/team_test.rb
146
- - test/nfl_data/parsers/player_parser_test.rb
147
- - test/nfl_data/parsers/statline_parser_test.rb
148
- - test/nfl_data/parsers/team_parser_test.rb
149
- - test/test_helper.rb
177
+ - spec/api/player_spec.rb
178
+ - spec/api/schedule_spec.rb
179
+ - spec/api/statline_spec.rb
180
+ - spec/models/game_spec.rb
181
+ - spec/models/player_spec.rb
182
+ - spec/models/schedule_spec.rb
183
+ - spec/models/statline_spec.rb
184
+ - spec/my_sports_feeds/client_spec.rb
185
+ - spec/my_sports_feeds/players_feed_spec.rb
186
+ - spec/my_sports_feeds/seasonal_games_feed_spec.rb
187
+ - spec/my_sports_feeds/weekly_player_gamelogs_spec.rb
188
+ - spec/parsers/player_parser_spec.rb
189
+ - spec/parsers/schedule_parser_spec.rb
190
+ - spec/parsers/statline_parser_spec.rb
191
+ - spec/spec_helper.rb
150
192
  homepage: https://github.com/thetizzo/nfl_data
151
193
  licenses:
152
194
  - MIT
@@ -166,19 +208,23 @@ required_rubygems_version: !ruby/object:Gem::Requirement
166
208
  - !ruby/object:Gem::Version
167
209
  version: '0'
168
210
  requirements: []
169
- rubyforge_project:
170
- rubygems_version: 2.4.5.1
211
+ rubygems_version: 3.1.2
171
212
  signing_key:
172
213
  specification_version: 4
173
214
  summary: Parse NFL data like a boss
174
215
  test_files:
175
- - test/nfl_data/api/player_test.rb
176
- - test/nfl_data/api/statline_test.rb
177
- - test/nfl_data/api/team_test.rb
178
- - test/nfl_data/models/player_test.rb
179
- - test/nfl_data/models/statline_test.rb
180
- - test/nfl_data/models/team_test.rb
181
- - test/nfl_data/parsers/player_parser_test.rb
182
- - test/nfl_data/parsers/statline_parser_test.rb
183
- - test/nfl_data/parsers/team_parser_test.rb
184
- - test/test_helper.rb
216
+ - spec/api/player_spec.rb
217
+ - spec/api/schedule_spec.rb
218
+ - spec/api/statline_spec.rb
219
+ - spec/models/game_spec.rb
220
+ - spec/models/player_spec.rb
221
+ - spec/models/schedule_spec.rb
222
+ - spec/models/statline_spec.rb
223
+ - spec/my_sports_feeds/client_spec.rb
224
+ - spec/my_sports_feeds/players_feed_spec.rb
225
+ - spec/my_sports_feeds/seasonal_games_feed_spec.rb
226
+ - spec/my_sports_feeds/weekly_player_gamelogs_spec.rb
227
+ - spec/parsers/player_parser_spec.rb
228
+ - spec/parsers/schedule_parser_spec.rb
229
+ - spec/parsers/statline_parser_spec.rb
230
+ - spec/spec_helper.rb
@@ -1,5 +0,0 @@
1
- engines:
2
- rubocop:
3
- enabled: true
4
- bundler-audit:
5
- enabled: true
@@ -1,2 +0,0 @@
1
- Style/Documentation:
2
- Enabled: false
@@ -1,23 +0,0 @@
1
- module NflData
2
- module API
3
- class Team
4
- def initialize
5
- @parser = TeamParser.new
6
- end
7
-
8
- def get(year, with_schedule = false)
9
- @parser.get_by_year(year, with_schedule).to_json
10
- end
11
-
12
- class << self
13
- def get_all(year)
14
- new.get(year)
15
- end
16
-
17
- def get_all_with_schedule(year)
18
- new.get(year, true)
19
- end
20
- end
21
- end
22
- end
23
- end