Sha256: bf5a392a3b26e0c388ea86dedb11f845054aa537e2db174b481d66feb16167da
Contents?: true
Size: 1.45 KB
Versions: 1
Compression:
Stored size: 1.45 KB
Contents
# frozen_string_literal: true module MLBStatsAPI class LiveFeed < Base attr_reader :id def initialize(api, data) @api = api @data = data # If we need to nuke and start over, keep this piece @id = data['gameData']['game']['pk'] end def boxscore @data['liveData']['boxscore'] end def decisions @data['liveData']['decisions'] end def leaders @data['liveData']['leaders'] end def linescore @data['liveData']['linescore'] end def plays @data['liveData']['plays'] end def timestamps @api.live_feed_timestamps(@id) end def reload! @data = @api.get("/game/#{@id}/feed/live", version: '1.1') true end def update! return reload! unless @data diffs = @api.live_feed_diff( @data['gamePk'], timecode: @data['metaData']['timeStamp'] ) return process_diffs(diffs) if diffs.is_a(Array) # If the diff is too large or too old, a new feed is returned @data = diffs if diffs.is_a?(Hash) true end def process_diffs(diffs) diffs.each do |diff_set| Hana::Patch.new(diff_set['diff']).apply(@data) end @api.logger&.info 'Successfully processed live feed diff' true rescue Hana::Patch::Exception @api.logger&.info 'Failed to process live feed diff; nuking' # Nuke it! @data = nil reload! false end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
mlb_stats_api-0.1.0 | lib/mlb_stats_api/live_feed.rb |