From d174355533b3ec73fc78cfa934c24d56a14f6cc4 Mon Sep 17 00:00:00 2001 From: Salma Date: Mon, 10 Feb 2025 17:30:35 +0100 Subject: [PATCH 1/6] adding get user info end point --- lib/leoandruby/client.rb | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/lib/leoandruby/client.rb b/lib/leoandruby/client.rb index 6478f1d..6d8fe1c 100644 --- a/lib/leoandruby/client.rb +++ b/lib/leoandruby/client.rb @@ -32,6 +32,19 @@ def generate_image(prompt:, model_id:, width:, height:, num_images: 1) handle_response(response) end + def me + uri = URI("#{API_BASE_URL}/me") + request = Net::HTTP::Get.new(uri) + request["Accept"] = "application/json" + request["Authorization"] = "Bearer #{@api_key}" + + response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http| + http.request(request) + end + + handle_response(response) + end + def get_generation(generation_id) uri = URI("#{API_BASE_URL}/generations/#{generation_id}") request = Net::HTTP::Get.new(uri) From 8ecaf6a63144d9e546c56e55f8361a044735eba2 Mon Sep 17 00:00:00 2001 From: Salma Date: Tue, 11 Feb 2025 09:17:43 +0100 Subject: [PATCH 2/6] Added get_custom_elements_by_user_id endpoint --- lib/leoandruby/client.rb | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/lib/leoandruby/client.rb b/lib/leoandruby/client.rb index 6d8fe1c..53584ef 100644 --- a/lib/leoandruby/client.rb +++ b/lib/leoandruby/client.rb @@ -45,6 +45,19 @@ def me handle_response(response) end + def get_custom_elements_by_user_id(user_id) + uri = URI("#{API_BASE_URL}/elements/user/#{user_id}") + request = Net::HTTP::Get.new(uri) + request["Accept"] = "application/json" + request["Authorization"] = "Bearer #{@api_key}" + + response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http| + http.request(request) + end + + handle_response(response) + end + def get_generation(generation_id) uri = URI("#{API_BASE_URL}/generations/#{generation_id}") request = Net::HTTP::Get.new(uri) From 11c105a143448ca033b4c6f6c372deb4ebabb654 Mon Sep 17 00:00:00 2001 From: Salma Date: Tue, 11 Feb 2025 09:59:19 +0100 Subject: [PATCH 3/6] Added generate_image_with_user_elements endpoint --- lib/leoandruby/client.rb | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/lib/leoandruby/client.rb b/lib/leoandruby/client.rb index 53584ef..82dba0b 100644 --- a/lib/leoandruby/client.rb +++ b/lib/leoandruby/client.rb @@ -32,6 +32,37 @@ def generate_image(prompt:, model_id:, width:, height:, num_images: 1) handle_response(response) end + def generate_image_with_user_elements(prompt:, model_id:, width:, height:, num_images: 1, user_elements:) + uri = URI("#{API_BASE_URL}/generations") + request = Net::HTTP::Post.new(uri) + request["Accept"] = "application/json" + request["Authorization"] = "Bearer #{@api_key}" + request["Content-Type"] = "application/json" + + user_elements_data = user_elements.map do |element| + { + userLoraId: element[:id], + weight: element[:weight] || 1.0 + } + end + + request.body = { + prompt: prompt, + modelId: model_id, + width: width, + height: height, + num_images: num_images, + userElements: user_elements_data + }.to_json + + response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http| + http.request(request) + end + + handle_response(response) + end + + def me uri = URI("#{API_BASE_URL}/me") request = Net::HTTP::Get.new(uri) From 52b7c2ca65f5cf7e5e69697c099112f79b83d510 Mon Sep 17 00:00:00 2001 From: Salma Date: Tue, 11 Feb 2025 10:37:08 +0100 Subject: [PATCH 4/6] Added endpoints to README file --- README.md | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/README.md b/README.md index 905b869..aa829e9 100644 --- a/README.md +++ b/README.md @@ -9,8 +9,10 @@ ## Features - Generate images using Leonardo.ai's models. +- Generate images using user-customized elements. - Retrieve the status and result of a generated image. - List available models on the Leonardo.ai platform. +- Fetch user information and custom elements. - Webhook support to handle asynchronous image generation results. - Rails generator for setting up webhook integration effortlessly. - Simple and intuitive Ruby interface for interacting with the Leonardo.ai API. @@ -96,6 +98,52 @@ image_response = client.get_generation(generation_id) puts image_response ``` +### 5. Generate an Image with User Elements + +You can generate an image using custom user elements by passing a list of objects containing id and weight: + +Example Usage: + +```ruby +user_elements = [ + { id: 26060, weight: 0.8 }, + { id: 27868, weight: 1.2 } +] + +generation_response = client.generate_image_with_user_elements( + prompt: "A birthday celebration scene", + model_id: "SDXL_0_9", + width: 1024, + height: 1024, + num_images: 2, + user_elements: user_elements +) + +puts generation_response + +``` + +### 6. Retrieve User Information + +To fetch details about the currently authenticated user: + +```ruby +user_info = client.me +puts user_info + +``` + +### 7. Retrieve Custom Elements by User ID + +To get a list of custom elements associated with a specific user ID: + +```ruby +user_id = "12345" +custom_elements = client.get_custom_elements_by_user_id(user_id) +puts custom_elements + +``` + --- ## Webhook Integration (Rails) From 91af0a869db3011f2f43445cd0f18cc145706a87 Mon Sep 17 00:00:00 2001 From: Salma Date: Thu, 20 Feb 2025 12:19:18 +0100 Subject: [PATCH 5/6] Added more params to generate_image_with_user_elements --- README.md | 5 ++++- lib/leoandruby/client.rb | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index aa829e9..718fe67 100644 --- a/README.md +++ b/README.md @@ -115,7 +115,10 @@ generation_response = client.generate_image_with_user_elements( model_id: "SDXL_0_9", width: 1024, height: 1024, - num_images: 2, + presetStyle: "ILLUSTRATION", + num_images: 1, + promptMagic: true, + enhancePrompt: true, user_elements: user_elements ) diff --git a/lib/leoandruby/client.rb b/lib/leoandruby/client.rb index 82dba0b..24de470 100644 --- a/lib/leoandruby/client.rb +++ b/lib/leoandruby/client.rb @@ -32,7 +32,7 @@ def generate_image(prompt:, model_id:, width:, height:, num_images: 1) handle_response(response) end - def generate_image_with_user_elements(prompt:, model_id:, width:, height:, num_images: 1, user_elements:) + def generate_image_with_user_elements(prompt:, model_id:, width:, height:, presetStyle: num_images: 1, promptMagic:, enhancePrompt:, user_elements:) uri = URI("#{API_BASE_URL}/generations") request = Net::HTTP::Post.new(uri) request["Accept"] = "application/json" @@ -51,7 +51,10 @@ def generate_image_with_user_elements(prompt:, model_id:, width:, height:, num_i modelId: model_id, width: width, height: height, + presetStyle: presetStyle, num_images: num_images, + promptMagic: promptMagic, + enhancePrompt: enhancePrompt, userElements: user_elements_data }.to_json From 708cde784659927a77d1bad6dd13efb739a52004 Mon Sep 17 00:00:00 2001 From: Salma Date: Thu, 20 Feb 2025 12:43:52 +0100 Subject: [PATCH 6/6] Added more params to generate_image_with_user_elements bug fix --- lib/leoandruby/client.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/leoandruby/client.rb b/lib/leoandruby/client.rb index 24de470..9402809 100644 --- a/lib/leoandruby/client.rb +++ b/lib/leoandruby/client.rb @@ -32,7 +32,7 @@ def generate_image(prompt:, model_id:, width:, height:, num_images: 1) handle_response(response) end - def generate_image_with_user_elements(prompt:, model_id:, width:, height:, presetStyle: num_images: 1, promptMagic:, enhancePrompt:, user_elements:) + def generate_image_with_user_elements(prompt:, model_id:, width:, height:, presetStyle: ,num_images: 1, promptMagic:, enhancePrompt:, user_elements:) uri = URI("#{API_BASE_URL}/generations") request = Net::HTTP::Post.new(uri) request["Accept"] = "application/json"