Class: Jumbotron::Providers::Espn::Resources::Scoreboard
- Inherits:
-
Object
- Object
- Jumbotron::Providers::Espn::Resources::Scoreboard
- Defined in:
- app/providers/jumbotron/providers/espn/resources/scoreboard.rb
Constant Summary collapse
- DISCOVERY_SEASON_TYPES =
[1, 2, 3].freeze
Class Method Summary collapse
- .acquire(adapter:, **query) ⇒ Object
-
.acquire_full_season(adapter:, season_year:) ⇒ Object
ESPN year-only and phase-only scoreboards are capped (~100 events) and do not isolate a season.
- .expand_full_season(adapter:, season_year:) ⇒ Object
Class Method Details
.acquire(adapter:, **query) ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'app/providers/jumbotron/providers/espn/resources/scoreboard.rb', line 10 def self.acquire(adapter:, **query) cooldown = Cooldown.new return CommandTower::Clients::ClientResult.failure(error: CooldownActiveError.new) if cooldown.cooling_down? result = Jumbotron::Clients.espn.scoreboard.get( sport: adapter.sport, league: adapter.league, **query ) if result.success? cooldown.record_success! else cooldown.record_failure!(result.error) end result end |
.acquire_full_season(adapter:, season_year:) ⇒ Object
ESPN year-only and phase-only scoreboards are capped (~100 events) and do not isolate a season. Full-season discovery expands leagues.calendar into dates + seasontype + week requests, then concatenates unique events.
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'app/providers/jumbotron/providers/espn/resources/scoreboard.rb', line 30 def self.acquire_full_season(adapter:, season_year:) year = Integer(season_year) seed = acquire(adapter: adapter, dates: year) return seed unless seed.success? requests = discovery_requests(year, seed.output.season_calendar) return unavailable_calendar(year) if requests.empty? events_by_id = {} requests.each do |query| result = acquire(adapter: adapter, **query) return result unless result.success? Array(result.output.events).each do |event| events_by_id[event.id] ||= event end end CommandTower::Clients::ClientResult.success( output: Jumbotron::Deserializers::Clients::Espn::Scoreboard::Get::Result.build!( events: events_by_id.values, season_calendar: seed.output.season_calendar ) ) end |
.expand_full_season(adapter:, season_year:) ⇒ Object
56 57 58 59 60 61 62 63 64 65 |
# File 'app/providers/jumbotron/providers/espn/resources/scoreboard.rb', line 56 def self.(adapter:, season_year:) year = Integer(season_year) seed = acquire(adapter: adapter, dates: year) return seed unless seed.success? requests = discovery_requests(year, seed.output.season_calendar) return unavailable_calendar(year) if requests.empty? CommandTower::Clients::ClientResult.success(output: requests) end |