Class: MLBStatsAPI::LiveFeed
- Defined in:
- lib/mlb_stats_api/live_feed.rb
Instance Attribute Summary collapse
-
#id ⇒ Object
readonly
Returns the value of attribute id.
Attributes inherited from Base
Instance Method Summary collapse
- #boxscore ⇒ Object
- #decisions ⇒ Object
- #game_data ⇒ Object
-
#initialize(api, data) ⇒ LiveFeed
constructor
A new instance of LiveFeed.
- #leaders ⇒ Object
- #linescore ⇒ Object
- #live_data ⇒ Object
- #metadata ⇒ Object
- #plays ⇒ Object
- #process_diffs(diffs) ⇒ Object
- #reload! ⇒ Object
- #timestamps ⇒ Object
- #update! ⇒ Object
Methods inherited from Base
Constructor Details
#initialize(api, data) ⇒ LiveFeed
Returns a new instance of LiveFeed.
7 8 9 10 11 12 13 |
# File 'lib/mlb_stats_api/live_feed.rb', line 7 def initialize(api, data) @api = api @data = data # If we need to nuke and start over, keep this piece @id = data['gamePk'] end |
Instance Attribute Details
#id ⇒ Object (readonly)
Returns the value of attribute id.
5 6 7 |
# File 'lib/mlb_stats_api/live_feed.rb', line 5 def id @id end |
Instance Method Details
#boxscore ⇒ Object
15 16 17 |
# File 'lib/mlb_stats_api/live_feed.rb', line 15 def boxscore @data['liveData']['boxscore'] end |
#decisions ⇒ Object
19 20 21 |
# File 'lib/mlb_stats_api/live_feed.rb', line 19 def decisions @data['liveData']['decisions'] end |
#game_data ⇒ Object
35 36 37 |
# File 'lib/mlb_stats_api/live_feed.rb', line 35 def game_data @data['gameData'] end |
#leaders ⇒ Object
23 24 25 |
# File 'lib/mlb_stats_api/live_feed.rb', line 23 def leaders @data['liveData']['leaders'] end |
#linescore ⇒ Object
27 28 29 |
# File 'lib/mlb_stats_api/live_feed.rb', line 27 def linescore @data['liveData']['linescore'] end |
#live_data ⇒ Object
39 40 41 |
# File 'lib/mlb_stats_api/live_feed.rb', line 39 def live_data @data['liveData'] end |
#metadata ⇒ Object
43 44 45 |
# File 'lib/mlb_stats_api/live_feed.rb', line 43 def @data['metaData'] end |
#plays ⇒ Object
31 32 33 |
# File 'lib/mlb_stats_api/live_feed.rb', line 31 def plays @data['liveData']['plays'] end |
#process_diffs(diffs) ⇒ Object
77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
# File 'lib/mlb_stats_api/live_feed.rb', line 77 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 |
#reload! ⇒ Object
51 52 53 54 55 56 57 |
# File 'lib/mlb_stats_api/live_feed.rb', line 51 def reload! @data = @api.get("/game/#{@id}/feed/live", version: '1.1') true rescue Net::OpenTimeout false end |
#timestamps ⇒ Object
47 48 49 |
# File 'lib/mlb_stats_api/live_feed.rb', line 47 def @api.(@id) end |
#update! ⇒ Object
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/mlb_stats_api/live_feed.rb', line 59 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 rescue Net::OpenTimeout false end |