Class: AILabTools::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/ailabtools/client.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(api_key:, base_url: "https://www.ailabapi.com", timeout: 120) ⇒ Client

Returns a new instance of Client.



7
8
9
10
11
12
13
14
# File 'lib/ailabtools/client.rb', line 7

def initialize(api_key:, base_url: "https://www.ailabapi.com", timeout: 120)
  requester = Requester.new(api_key: api_key, base_url: base_url, timeout: timeout)
  @common = API::CommonAPI.new(requester)
  @cutout = API::CutoutAPI.new(requester)
  @image = API::ImageAPI.new(requester)
  @portrait = API::PortraitAPI.new(requester)
  @background = API::BackgroundAPI.new(@cutout)
end

Instance Attribute Details

#backgroundObject (readonly)

Returns the value of attribute background.



5
6
7
# File 'lib/ailabtools/client.rb', line 5

def background
  @background
end

#commonObject (readonly)

Returns the value of attribute common.



5
6
7
# File 'lib/ailabtools/client.rb', line 5

def common
  @common
end

#cutoutObject (readonly)

Returns the value of attribute cutout.



5
6
7
# File 'lib/ailabtools/client.rb', line 5

def cutout
  @cutout
end

#imageObject (readonly)

Returns the value of attribute image.



5
6
7
# File 'lib/ailabtools/client.rb', line 5

def image
  @image
end

#portraitObject (readonly)

Returns the value of attribute portrait.



5
6
7
# File 'lib/ailabtools/client.rb', line 5

def portrait
  @portrait
end

Instance Method Details

#closeObject



33
34
35
# File 'lib/ailabtools/client.rb', line 33

def close
  nil
end

#wait_for_task(task_id, interval: 5, timeout: 300, raise_on_failed: true) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/ailabtools/client.rb', line 16

def wait_for_task(task_id, interval: 5, timeout: 300, raise_on_failed: true)
  deadline = Time.now + timeout
  loop do
    result = @common.common_query_async_task_result(
      Generated::Params::CommonQueryAsyncTaskResultParams.new(task_id: task_id)
    )
    status = result.data && result.data.task_status || result.task_status
    return result if status == 2
    if status == 3
      raise SDKError, "AILabTools task failed: #{task_id}" if raise_on_failed
      return result
    end
    raise SDKError, "AILabTools task timed out: #{task_id}" if Time.now >= deadline
    sleep interval if interval.positive?
  end
end