nfl_data 0.0.14 → 0.1.0

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 (62) hide show
  1. checksums.yaml +4 -4
  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 +7 -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 +10 -19
  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/models/game.rb +5 -0
  18. data/lib/nfl_data/models/player.rb +11 -18
  19. data/lib/nfl_data/models/schedule.rb +12 -0
  20. data/lib/nfl_data/models/statline.rb +18 -19
  21. data/lib/nfl_data/my_sports_feeds/client.rb +45 -0
  22. data/lib/nfl_data/my_sports_feeds/players_feed.rb +18 -0
  23. data/lib/nfl_data/my_sports_feeds/seasonal_games_feed.rb +22 -0
  24. data/lib/nfl_data/my_sports_feeds/weekly_player_gamelogs.rb +21 -0
  25. data/lib/nfl_data/parsers/player_parser.rb +20 -93
  26. data/lib/nfl_data/parsers/schedule_parser.rb +20 -0
  27. data/lib/nfl_data/parsers/statline_parser.rb +27 -71
  28. data/lib/nfl_data/version.rb +1 -1
  29. data/nfl_data.gemspec +23 -23
  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 +49 -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 +83 -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/team.rb +0 -38
  50. data/lib/nfl_data/parsers/data/teams.rb +0 -36
  51. data/lib/nfl_data/parsers/parser_helper.rb +0 -6
  52. data/lib/nfl_data/parsers/team_parser.rb +0 -76
  53. data/test/nfl_data/api/player_test.rb +0 -25
  54. data/test/nfl_data/api/statline_test.rb +0 -21
  55. data/test/nfl_data/api/team_test.rb +0 -13
  56. data/test/nfl_data/models/player_test.rb +0 -81
  57. data/test/nfl_data/models/statline_test.rb +0 -121
  58. data/test/nfl_data/models/team_test.rb +0 -43
  59. data/test/nfl_data/parsers/player_parser_test.rb +0 -81
  60. data/test/nfl_data/parsers/statline_parser_test.rb +0 -34
  61. data/test/nfl_data/parsers/team_parser_test.rb +0 -37
  62. data/test/test_helper.rb +0 -14
@@ -0,0 +1,63 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.describe NflData::Parsers::PlayerParser do
4
+ subject(:parsed) { described_class.new.parse(player_data: player_data) }
5
+
6
+ let(:player_data) do
7
+ [
8
+ {
9
+ "player" => {
10
+ "id" => 13507,
11
+ "firstName" => "Manny",
12
+ "lastName" => "Abad",
13
+ "primaryPosition" => "DB",
14
+ "alternatePositions" => [],
15
+ "jerseyNumber" => 38,
16
+ "currentTeam" => {
17
+ "id" => 67,
18
+ "abbreviation" => "TEN"
19
+ },
20
+ "currentRosterStatus" => "ROSTER",
21
+ "currentInjury" => nil,
22
+ "height" => "5'11\"",
23
+ "weight" => 184,
24
+ "birthDate" => "1993-11-23",
25
+ "age" => 24,
26
+ "birthCity" => nil,
27
+ "birthCountry" => nil,
28
+ "rookie" => false,
29
+ "highSchool" => nil,
30
+ "college" => nil,
31
+ "handedness" => nil,
32
+ "officialImageSrc" => "nfl.com",
33
+ "socialMediaAccounts" => [],
34
+ "currentContractYear" => nil,
35
+ "drafted" => nil,
36
+ "externalMappings" => []
37
+ },
38
+ "teamAsOfDate" => {
39
+ "id" => 67,
40
+ "abbreviation" => "TEN"
41
+ }
42
+ }
43
+ ]
44
+ end
45
+
46
+ let(:player) { parsed.first }
47
+
48
+ it "should return an array of players" do
49
+ expect(parsed).to be_a(Array)
50
+ expect(player).to be_a(NflData::Player)
51
+ end
52
+
53
+ it "should parse the games" do
54
+ expect(player.first_name).to eq("Manny")
55
+ expect(player.last_name).to eq("Abad")
56
+ expect(player.full_name).to eq("Manny Abad")
57
+ expect(player.position).to eq("DB")
58
+ expect(player.number).to eq(38)
59
+ expect(player.team).to eq("TEN")
60
+ expect(player.msf_player_id).to eq(13507)
61
+ expect(player.image_source).to eq("nfl.com")
62
+ end
63
+ end
@@ -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,57 +1,57 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nfl_data
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.14
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - thetizzo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-09-18 00:00:00.000000000 Z
11
+ date: 2020-09-02 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.16.5
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.16.5
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.11.3
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.11.3
54
+ version: '0.9'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: vcr
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -72,96 +72,123 @@ dependencies:
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 3.4.2
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: 3.4.2
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.59.1
89
+ version: '0.1'
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.59.1
96
+ version: '0.1'
97
+ - !ruby/object:Gem::Dependency
98
+ name: nokogiri
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
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'
97
111
  - !ruby/object:Gem::Dependency
98
112
  name: typhoeus
99
113
  requirement: !ruby/object:Gem::Requirement
100
114
  requirements:
101
115
  - - "~>"
102
116
  - !ruby/object:Gem::Version
103
- version: '1.3'
117
+ version: '1.4'
104
118
  type: :runtime
105
119
  prerelease: false
106
120
  version_requirements: !ruby/object:Gem::Requirement
107
121
  requirements:
108
122
  - - "~>"
109
123
  - !ruby/object:Gem::Version
110
- version: '1.3'
124
+ version: '1.4'
111
125
  - !ruby/object:Gem::Dependency
112
- name: nokogiri
126
+ name: zeitwerk
113
127
  requirement: !ruby/object:Gem::Requirement
114
128
  requirements:
115
129
  - - "~>"
116
130
  - !ruby/object:Gem::Version
117
- version: '1.6'
131
+ version: '2.4'
118
132
  type: :runtime
119
133
  prerelease: false
120
134
  version_requirements: !ruby/object:Gem::Requirement
121
135
  requirements:
122
136
  - - "~>"
123
137
  - !ruby/object:Gem::Version
124
- version: '1.6'
138
+ version: '2.4'
125
139
  description: Parse NFL data like a boss
126
140
  email:
127
141
  - j.m.taylor1@gmail.com
128
142
  executables:
129
143
  - console
144
+ - setup
130
145
  extensions: []
131
146
  extra_rdoc_files: []
132
147
  files:
133
- - ".codeclimate.yml"
148
+ - ".envrc"
134
149
  - ".gitignore"
135
- - ".rubocop.yml"
150
+ - ".rspec"
151
+ - ".standard.yml"
152
+ - ".travis.yml"
153
+ - CHANGELOG.md
136
154
  - Gemfile
137
155
  - LICENSE.txt
138
156
  - README.md
139
157
  - Rakefile
140
158
  - bin/console
159
+ - bin/setup
141
160
  - lib/nfl_data.rb
142
161
  - lib/nfl_data/api/player.rb
162
+ - lib/nfl_data/api/schedule.rb
143
163
  - lib/nfl_data/api/statline.rb
144
- - lib/nfl_data/api/team.rb
164
+ - lib/nfl_data/models/game.rb
145
165
  - lib/nfl_data/models/player.rb
166
+ - lib/nfl_data/models/schedule.rb
146
167
  - lib/nfl_data/models/statline.rb
147
- - lib/nfl_data/models/team.rb
148
- - lib/nfl_data/parsers/data/teams.rb
149
- - lib/nfl_data/parsers/parser_helper.rb
168
+ - lib/nfl_data/my_sports_feeds/client.rb
169
+ - lib/nfl_data/my_sports_feeds/players_feed.rb
170
+ - lib/nfl_data/my_sports_feeds/seasonal_games_feed.rb
171
+ - lib/nfl_data/my_sports_feeds/weekly_player_gamelogs.rb
150
172
  - lib/nfl_data/parsers/player_parser.rb
173
+ - lib/nfl_data/parsers/schedule_parser.rb
151
174
  - lib/nfl_data/parsers/statline_parser.rb
152
- - lib/nfl_data/parsers/team_parser.rb
153
175
  - lib/nfl_data/version.rb
154
176
  - nfl_data.gemspec
155
- - test/nfl_data/api/player_test.rb
156
- - test/nfl_data/api/statline_test.rb
157
- - test/nfl_data/api/team_test.rb
158
- - test/nfl_data/models/player_test.rb
159
- - test/nfl_data/models/statline_test.rb
160
- - test/nfl_data/models/team_test.rb
161
- - test/nfl_data/parsers/player_parser_test.rb
162
- - test/nfl_data/parsers/statline_parser_test.rb
163
- - test/nfl_data/parsers/team_parser_test.rb
164
- - 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
165
192
  homepage: https://github.com/thetizzo/nfl_data
166
193
  licenses:
167
194
  - MIT
@@ -181,19 +208,23 @@ required_rubygems_version: !ruby/object:Gem::Requirement
181
208
  - !ruby/object:Gem::Version
182
209
  version: '0'
183
210
  requirements: []
184
- rubyforge_project:
185
- rubygems_version: 2.7.3
211
+ rubygems_version: 3.1.2
186
212
  signing_key:
187
213
  specification_version: 4
188
214
  summary: Parse NFL data like a boss
189
215
  test_files:
190
- - test/nfl_data/api/player_test.rb
191
- - test/nfl_data/api/statline_test.rb
192
- - test/nfl_data/api/team_test.rb
193
- - test/nfl_data/models/player_test.rb
194
- - test/nfl_data/models/statline_test.rb
195
- - test/nfl_data/models/team_test.rb
196
- - test/nfl_data/parsers/player_parser_test.rb
197
- - test/nfl_data/parsers/statline_parser_test.rb
198
- - test/nfl_data/parsers/team_parser_test.rb
199
- - 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