defmodule SupermakerAiImageMaster do @moduledoc """ A module for interacting with the Supermaker AI Image service. Provides utility functions for constructing URLs and managing image requests. """ @base_url "https://supermaker.ai/image/" @doc """ Builds a URL for the Supermaker AI Image service with optional parameters. ## Examples iex> build_url("generate", prompt: "A cat wearing a hat") "https://supermaker.ai/image/generate?prompt=A%20cat%20wearing%20a%20hat" iex> build_url("edit", image_url: "https://example.com/image.jpg", mask_url: "https://example.com/mask.png") "https://supermaker.ai/image/edit?image_url=https%3A%2F%2Fexample.com%2Fimage.jpg&mask_url=https%3A%2F%2Fexample.com%2Fmask.png" """ def build_url(endpoint, params \\ []) do url = @base_url <> endpoint if params == [] do url else query_string = params |> Enum.map(fn {key, value} -> "#{key}=#{URI.encode(value)}" end) |> Enum.join("&") "#{url}?#{query_string}" end end @doc """ Generates a URL for image generation based on a text prompt. ## Examples iex> generate_url("A futuristic cityscape") "https://supermaker.ai/image/generate?prompt=A%20futuristic%20cityscape" """ def generate_url(prompt) do build_url("generate", prompt: prompt) end @doc """ Generates a URL for image editing, combining an existing image with a mask. ## Examples iex> edit_url("https://example.com/image.jpg", "https://example.com/mask.png") "https://supermaker.ai/image/edit?image_url=https%3A%2F%2Fexample.com%2Fimage.jpg&mask_url=https%3A%2F%2Fexample.com%2Fmask.png" """ def edit_url(image_url, mask_url) do build_url("edit", image_url: image_url, mask_url: mask_url) end @doc """ Generates a URL for image upscaling. ## Examples iex> upscale_url("https://example.com/image.jpg", scale: 2) "https://supermaker.ai/image/upscale?image_url=https%3A%2F%2Fexample.com%2Fimage.jpg&scale=2" """ def upscale_url(image_url, opts \\ []) do build_url("upscale", Keyword.merge([image_url: image_url], opts)) end @doc """ Generates a URL for removing background from an image. ## Examples iex> remove_background_url("https://example.com/image.jpg") "https://supermaker.ai/image/remove_background?image_url=https%3A%2F%2Fexample.com%2Fimage.jpg" """ def remove_background_url(image_url) do build_url("remove_background", image_url: image_url) end end