Class: Desiru::AsyncStatus

Inherits:
Object
  • Object
show all
Defined in:
lib/desiru/async_status.rb

Overview

AsyncStatus provides a simple interface for checking job status Compatible with the REST API’s job status endpoint

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(job_id) ⇒ AsyncStatus

Returns a new instance of AsyncStatus.



12
13
14
15
# File 'lib/desiru/async_status.rb', line 12

def initialize(job_id)
  @job_id = job_id
  @redis = Redis.new(url: Desiru.configuration.redis_url || ENV.fetch('REDIS_URL', nil))
end

Instance Attribute Details

#job_idObject (readonly)

Returns the value of attribute job_id.



10
11
12
# File 'lib/desiru/async_status.rb', line 10

def job_id
  @job_id
end

Instance Method Details

#progressObject



24
25
26
27
28
29
# File 'lib/desiru/async_status.rb', line 24

def progress
  status_data = fetch_status
  return 0 unless status_data

  status_data[:progress] || 0
end

#ready?Boolean

Returns:

  • (Boolean)


31
32
33
34
# File 'lib/desiru/async_status.rb', line 31

def ready?
  result_data = fetch_result
  !result_data.nil?
end

#resultObject

Raises:



36
37
38
39
40
41
42
43
# File 'lib/desiru/async_status.rb', line 36

def result
  result_data = fetch_result
  return nil unless result_data

  raise ModuleError, "Async job failed: #{result_data[:error]}" unless result_data[:success]

  result_data[:result]
end

#statusObject



17
18
19
20
21
22
# File 'lib/desiru/async_status.rb', line 17

def status
  status_data = fetch_status
  return 'pending' unless status_data

  status_data[:status] || 'pending'
end