Module: Kie::Task

Included in:
GeneralTask, SunoTask
Defined in:
lib/kie/task.rb

Overview

Common interface module for all task types (General API, Suno API, etc.) Classes including this module must implement:

  • #status: Returns normalized status symbol (:processing, :success, :failed)

  • #urls: Returns array of result URLs

Constant Summary collapse

NORMALIZED_STATUSES =
%i[processing success failed].freeze

Instance Method Summary collapse

Instance Method Details

#completed?Boolean

Returns:

  • (Boolean)


23
24
25
# File 'lib/kie/task.rb', line 23

def completed?
  success? || failed?
end

#error_messageObject

Raises:

  • (NotImplementedError)


19
20
21
# File 'lib/kie/task.rb', line 19

def error_message
  raise NotImplementedError, "#{self.class} must implement #error_message"
end

#failed?Boolean

Returns:

  • (Boolean)


31
32
33
# File 'lib/kie/task.rb', line 31

def failed?
  status == :failed
end

#processing?Boolean

Returns:

  • (Boolean)


35
36
37
# File 'lib/kie/task.rb', line 35

def processing?
  status == :processing
end

#statusObject

Raises:

  • (NotImplementedError)


11
12
13
# File 'lib/kie/task.rb', line 11

def status
  raise NotImplementedError, "#{self.class} must implement #status"
end

#success?Boolean

Returns:

  • (Boolean)


27
28
29
# File 'lib/kie/task.rb', line 27

def success?
  status == :success
end

#urlsObject

Raises:

  • (NotImplementedError)


15
16
17
# File 'lib/kie/task.rb', line 15

def urls
  raise NotImplementedError, "#{self.class} must implement #urls"
end

#wait(timeout: 300, interval: 2, raise_on_failure: true) ⇒ self

Waits for the task to complete by polling refresh!

Parameters:

  • timeout (Numeric) (defaults to: 300)

    Maximum time to wait in seconds (default: 300)

  • interval (Numeric) (defaults to: 2)

    Time between polling attempts in seconds (default: 2)

  • raise_on_failure (Boolean) (defaults to: true)

    Whether to raise an exception on task failure (default: true)

Returns:

  • (self)

    Returns the task instance for chaining

Raises:



46
47
48
49
# File 'lib/kie/task.rb', line 46

def wait(timeout: 300, interval: 2, raise_on_failure: true)
  deadline = Time.now + timeout
  poll_until_completed(deadline: deadline, interval: interval, raise_on_failure: raise_on_failure)
end