Packages

Professional Elixir integration for makeshot.ai. Provides utilities for building links and integrating with https://makeshot.ai/.

Current section

Files

Jump to
makeshot_ai lib makeshot_ai.ex
Raw

lib/makeshot_ai.ex

defmodule MakeshotAi do
@moduledoc """
Provides functions for interacting with the Makeshot.ai API.
This module handles URL construction and provides a set of utility
functions for common Makeshot.ai tasks.
"""
@base_url "https://makeshot.ai"
@doc """
Builds a URL with optional parameters.
## Examples
iex> MakeshotAi.build_url("/api/v1/images", %{width: 800, height: 600})
"https://makeshot.ai/api/v1/images?width=800&height=600"
iex> MakeshotAi.build_url("/api/v1/videos")
"https://makeshot.ai/api/v1/videos"
"""
def build_url(path, params \\ %{}) when is_map(params) do
query_string =
params
|> Enum.reject(fn {_, value} -> is_nil(value) end)
|> Enum.map(fn {key, value} -> "#{key}=#{value}" end)
|> Enum.join("&")
case query_string do
"" ->
"#{@base_url}#{path}"
_ ->
"#{@base_url}#{path}?#{query_string}"
end
end
@doc """
Generates a screenshot URL.
## Examples
iex> MakeshotAi.screenshot_url("https://example.com", width: 1280, height: 720)
"https://makeshot.ai/screenshot?url=https%3A%2F%2Fexample.com&width=1280&height=720"
"""
def screenshot_url(url, opts \\ []) when is_list(opts) do
params = Keyword.put(opts, :url, url)
build_url("/screenshot", params)
|> URI.parse()
|> URI.to_string()
end
@doc """
Generates a thumbnail URL.
## Examples
iex> MakeshotAi.thumbnail_url("https://example.com/image.jpg", width: 200, height: 150)
"https://makeshot.ai/thumbnail?url=https%3A%2F%2Fexample.com%2Fimage.jpg&width=200&height=150"
"""
def thumbnail_url(url, opts \\ []) when is_list(opts) do
params = Keyword.put(opts, :url, url)
build_url("/thumbnail", params)
|> URI.parse()
|> URI.to_string()
end
@doc """
Generates a full page screenshot URL.
## Examples
iex> MakeshotAi.fullpage_url("https://example.com")
"https://makeshot.ai/fullpage?url=https%3A%2F%2Fexample.com"
"""
def fullpage_url(url, opts \\ []) when is_list(opts) do
params = Keyword.put(opts, :url, url)
build_url("/fullpage", params)
|> URI.parse()
|> URI.to_string()
end
@doc """
Encodes a URL for use in a query string.
## Examples
iex> MakeshotAi.encode_url("https://example.com/path with spaces")
"https%3A%2F%2Fexample.com%2Fpath%20with%20spaces"
"""
def encode_url(url) when is_binary(url) do
URI.encode(url)
end
end