Skip to content

Commit

Permalink
Merge 1e0b34a into c322d01
Browse files Browse the repository at this point in the history
  • Loading branch information
phoffer committed Jul 3, 2017
2 parents c322d01 + 1e0b34a commit c0b1789
Show file tree
Hide file tree
Showing 42 changed files with 2,427 additions and 298 deletions.
9 changes: 0 additions & 9 deletions lib/sportradar/api.rb
Original file line number Diff line number Diff line change
Expand Up @@ -31,15 +31,6 @@
require "sportradar/api/soccer/venue"

require "sportradar/api/football"
require "sportradar/api/ncaafb"
require "sportradar/api/ncaafb/season"
require "sportradar/api/ncaafb/week"
require "sportradar/api/ncaafb/game"
require "sportradar/api/ncaafb/team"
require "sportradar/api/ncaafb/player"
require "sportradar/api/ncaafb/quarter"
require "sportradar/api/ncaafb/drive"
require "sportradar/api/ncaafb/play"

require "sportradar/api/nfl"
require "sportradar/api/nfl/broadcast"
Expand Down
6 changes: 3 additions & 3 deletions lib/sportradar/api/data.rb
Original file line number Diff line number Diff line change
Expand Up @@ -48,14 +48,14 @@ def update_data(existing, data)

# @param existing [Hash{String=>Data}] Existing data hash, ID => entity
# @param data [Hash, Array] new data to update with
def create_data(existing = {}, data, klass: nil, **opts)
def create_data(existing = {}, data, klass: nil, identifier: 'id', **opts)
existing ||= {} # handles nil case, typically during object instantiation
case data
when [], {}
existing
when Array
data.each do |hash|
current = existing[hash['id']]
current = existing[hash[identifier]]
if current
current.update(hash, **opts)
else
Expand All @@ -65,7 +65,7 @@ def create_data(existing = {}, data, klass: nil, **opts)
existing[current.id]
end
when Hash
existing[data['id']] = klass.new(data, **opts)
existing[data[identifier]] = klass.new(data, **opts)
else
# raise
end
Expand Down
39 changes: 39 additions & 0 deletions lib/sportradar/api/football.rb
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,42 @@
require "sportradar/api/football/stat_pack/punts"
require "sportradar/api/football/stat_pack/receiving"
require "sportradar/api/football/stat_pack/rushing"


require "sportradar/api/football/team"
require "sportradar/api/football/venue"
require "sportradar/api/football/record"
require "sportradar/api/football/week"
require "sportradar/api/football/scoring"
require "sportradar/api/football/game_stats"
require "sportradar/api/football/game"
require "sportradar/api/football/quarter"
require "sportradar/api/football/drive"
require "sportradar/api/football/play"
require "sportradar/api/football/event"

require "sportradar/api/football/ncaafb"
require "sportradar/api/football/ncaafb/api"
require "sportradar/api/football/ncaafb/week"
require "sportradar/api/football/ncaafb/division"
require "sportradar/api/football/ncaafb/conference"
require "sportradar/api/football/ncaafb/subdivision"
require "sportradar/api/football/ncaafb/team"
require "sportradar/api/football/ncaafb/game"
require "sportradar/api/football/ncaafb/quarter"
require "sportradar/api/football/ncaafb/drive"
require "sportradar/api/football/ncaafb/play"
require "sportradar/api/football/ncaafb/player"




# to be deleted
# require "sportradar/api/ncaafb/season"
# require "sportradar/api/ncaafb/week"
# require "sportradar/api/ncaafb/game"
# require "sportradar/api/ncaafb/team"
# require "sportradar/api/ncaafb/player"
# require "sportradar/api/ncaafb/quarter"
# require "sportradar/api/ncaafb/drive"
# require "sportradar/api/ncaafb/play"
103 changes: 103 additions & 0 deletions lib/sportradar/api/football/drive.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
module Sportradar
module Api
module Football
class Drive < Data
attr_accessor :response, :api, :id, :sequence, :start_reason, :end_reason, :play_count, :duration, :first_downs, :gain, :penalty_yards, :scoring_drive, :quarter, :team

def self.new(data, **opts)
if data['type'] == 'event'
Event.new(data, **opts)
else
super
end
end

def initialize(data, **opts)
@response = data
@id = data["id"]
@api = opts[:api]
@plays_hash = {}
@events_hash = {}

update(data, **opts)
end

def update(data, **opts)
@type = data['type']
@sequence = data["sequence"]
@start_reason = data["start_reason"]
@end_reason = data["end_reason"]
@play_count = data["play_count"]
@duration = data["duration"]
@first_downs = data["first_downs"]
@gain = data["gain"]
@penalty_yards = data["penalty_yards"]
@scoring_drive = data["scoring_drive"]

@quarter_data = data['quarter']
@team_data = data['team']

create_data(@plays_hash, data['plays'], klass: Play, api: api, game: self) if data['plays']
create_data(@events_hash, data['events'], klass: Event, api: api, game: self) if data['events']

self
end

def plays
@plays_hash.values
end

def events
@events_hash.values
end

def end_reason_possibilities
[
'UNKNOWN',
'Touchdown',
'Safety',
'Field Goal',
'Missed FG',
'Blocked FG',
'Blocked FG, Downs',
'Blocked FG, Safety',
'Punt',
'Blocked Punt',
'Blocked Punt, Downs',
'Blocked Punt, Safety',
'Downs',
'Interception',
'Fumble',
'Fumble, Safety',
'Muffed FG',
'Muffed Punt',
'Muffed Kickoff',
'Kickoff',
'Own Kickoff',
'Onside Kick',
'Kickoff, No Play',
'End of Half',
'End of Game',
]
end
def normalized_end_reason
case end_reason
when 'Touchdown'
'Touchdown'
when 'Field Goal', 'Missed FG', "Blocked FG, Downs", 'Muffed FG', 'Blocked FG, Safety'
'Field Goal'
when 'Downs'
'Downs'
when 'Interception', 'Fumble'
'Turnover'
when 'Punt'
'Punt'
else
'Other'
end
end
end

end
end
end
30 changes: 30 additions & 0 deletions lib/sportradar/api/football/event.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
module Sportradar
module Api
module Football
class Event < Data
attr_accessor :response, :id, :sequence, :reference, :clock, :type, :event_type, :description, :alt_description

def initialize(data, **opts)
@response = data
@id = data["id"]
update(data, **opts)
end
def update(data, **opts)
@sequence = data["sequence"]
@reference = data["reference"]
@clock = data["clock"]
@type = data["type"]
@event_type = data["event_type"]
@description = data["description"] || data["summary"]
@alt_description = data["alt_description"]

self
end
def plays
[]
end
end

end
end
end
Loading

0 comments on commit c0b1789

Please sign in to comment.