Class: OmniflashSdk::Client
- Inherits:
-
Object
- Object
- OmniflashSdk::Client
- Defined in:
- lib/omniflash_sdk.rb
Instance Attribute Summary collapse
-
#api_key ⇒ Object
readonly
Returns the value of attribute api_key.
-
#base_url ⇒ Object
readonly
Returns the value of attribute base_url.
-
#http_factory ⇒ Object
Returns the value of attribute http_factory.
-
#timeout ⇒ Object
readonly
Returns the value of attribute timeout.
Instance Method Summary collapse
- #create_task(model_id:, prompt:, image_urls: nil, aspect_ratio: nil, **extra) ⇒ Object
- #get_task(task_id) ⇒ Object
-
#initialize(api_key: nil, base_url: DEFAULT_BASE_URL, timeout: 60) ⇒ Client
constructor
A new instance of Client.
- #run(model_id:, prompt:, image_urls: nil, aspect_ratio: nil, poll_interval: 3.0, max_wait: 600.0, **extra) ⇒ Object
Constructor Details
#initialize(api_key: nil, base_url: DEFAULT_BASE_URL, timeout: 60) ⇒ Client
Returns a new instance of Client.
48 49 50 51 52 53 54 55 |
# File 'lib/omniflash_sdk.rb', line 48 def initialize(api_key: nil, base_url: DEFAULT_BASE_URL, timeout: 60) @api_key = api_key || ENV["OMNIFLASH_API_KEY"] raise Error, "Missing API key. Pass api_key: or set OMNIFLASH_API_KEY. Get one at https://omniflash.net/" if @api_key.nil? || @api_key.empty? @base_url = base_url.sub(%r{/+\z}, "") @timeout = timeout @http_factory = nil end |
Instance Attribute Details
#api_key ⇒ Object (readonly)
Returns the value of attribute api_key.
45 46 47 |
# File 'lib/omniflash_sdk.rb', line 45 def api_key @api_key end |
#base_url ⇒ Object (readonly)
Returns the value of attribute base_url.
45 46 47 |
# File 'lib/omniflash_sdk.rb', line 45 def base_url @base_url end |
#http_factory ⇒ Object
Returns the value of attribute http_factory.
46 47 48 |
# File 'lib/omniflash_sdk.rb', line 46 def http_factory @http_factory end |
#timeout ⇒ Object (readonly)
Returns the value of attribute timeout.
45 46 47 |
# File 'lib/omniflash_sdk.rb', line 45 def timeout @timeout end |
Instance Method Details
#create_task(model_id:, prompt:, image_urls: nil, aspect_ratio: nil, **extra) ⇒ Object
57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/omniflash_sdk.rb', line 57 def create_task(model_id:, prompt:, image_urls: nil, aspect_ratio: nil, **extra) body = { model_id: model_id, prompt: prompt } body[:image_urls] = image_urls unless image_urls.nil? body[:aspect_ratio] = aspect_ratio unless aspect_ratio.nil? body.merge!(extra) data = request(:post, "/tasks/create", body: body) Task.new( task_id: (data["task_id"] || "").to_s, task_status: TaskStatus::QUEUED, request_id: data["request_id"], credits: data["credits"], raw: data ) end |
#get_task(task_id) ⇒ Object
72 73 74 75 |
# File 'lib/omniflash_sdk.rb', line 72 def get_task(task_id) data = request(:get, "/tasks/#{task_id}") task_from_data(data) end |
#run(model_id:, prompt:, image_urls: nil, aspect_ratio: nil, poll_interval: 3.0, max_wait: 600.0, **extra) ⇒ Object
77 78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'lib/omniflash_sdk.rb', line 77 def run(model_id:, prompt:, image_urls: nil, aspect_ratio: nil, poll_interval: 3.0, max_wait: 600.0, **extra) task = create_task(model_id: model_id, prompt: prompt, image_urls: image_urls, aspect_ratio: aspect_ratio, **extra) deadline = monotonic + max_wait until task.done? raise Error.new("Task #{task.task_id} did not finish within #{max_wait}s", code: task.task_status) if monotonic > deadline sleep_for(poll_interval) task = get_task(task.task_id) end raise Error.new("Task #{task.task_id} failed", code: TaskStatus::FAILED) if task.task_status == TaskStatus::FAILED task end |