Class: Jumbotron::Workflows::ExecuteDiscoveryWorkflow

Inherits:
CommandTower::Workflows::ApplicationWorkflow
  • Object
show all
Defined in:
app/workflows/jumbotron/workflows/execute_discovery_workflow.rb

Constant Summary collapse

CONTENTION_WAIT_SECONDS =
5

Instance Method Summary collapse

Instance Method Details

#call(adapter_id:, discovery_id:) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'app/workflows/jumbotron/workflows/execute_discovery_workflow.rb', line 10

def call(adapter_id:, discovery_id:)
  resolved = Services::Adapters::ResolveDiscovery.call(
    adapter_id: adapter_id,
    discovery_id: discovery_id
  )
  return map_resolution_failure(resolved) unless resolved.success?

  adapter = resolved.data[:adapter]
  definition = resolved.data[:definition]
  ensured = Services::Adapters::EnsureLeague.call(adapter: adapter)
  return map_resolution_failure(ensured) unless ensured.success?

  league = ensured.data[:league]
  return cooldown_deferred(adapter) if adapter.provider_cooling_down?

  expanded = adapter.scopes_for_discovery(definition)
  return map_expand_failure(adapter, expanded) unless expanded.success?

  scopes = Array(expanded.output).map do |acquisition|
    { endpoint: definition.endpoint, acquisition: acquisition }
  end
  return empty_scopes_failure(adapter, definition) if scopes.empty?

  run_scopes(adapter, league, scopes, discovery_id)
end