Cloudinex is an Elixir wrapper around the Cloudinary Image Upload API and Admin API. Most of the methods in the APIs have been implemented in this library.
To upload an image url:
iex> Cloudinex.Uploader.upload_url("http://example.com/example.jpg")
{:ok,
%{"bytes" => 228821,
"created_at" => "2017-09-03T20:43:45Z",
"etag" => "96703c568b938567551bf0e408ab2f2a",
"format" => "jpg",
"height" => 2048,
"original_filename" => "02qqN5T",
"public_id" => "i5duxjofpqcdprjl0gag",
"resource_type" => "image",
"secure_url" => "https://res.cloudinary.com/demo/image/upload/v1504471425/i5duxjofpqcdprjl0gag.jpg",
"signature" => "5f0475dfb785049d97f937071802ee88cc153ed0",
"tags" => [],
"type" => "upload",
"url" => "http://res.cloudinary.com/demo/image/upload/v1504471425/i5duxjofpqcdprjl0gag.jpg",
"version" => 1504471425,
"width" => 2048}}
iex> Cloudinex.Uploader.upload_file("./path/to/file.jpg")
{:ok,
%{"bytes" => 228821,
"created_at" => "2017-09-03T20:43:45Z",
"etag" => "96703c568b938567551bf0e408ab2f2a",
"format" => "jpg",
"height" => 2048,
"original_filename" => "02qqN5T",
"public_id" => "i5duxjofpqcdprjl0gag",
"resource_type" => "image",
"secure_url" => "https://res.cloudinary.com/demo/image/upload/v1504471425/i5duxjofpqcdprjl0gag.jpg",
"signature" => "5f0475dfb785049d97f937071802ee88cc153ed0",
"tags" => [],
"type" => "upload",
"url" => "http://res.cloudinary.com/demo/image/upload/v1504471425/i5duxjofpqcdprjl0gag.jpg",
"version" => 1504471425,
"width" => 2048}}
- A url to the image at its original dimensions and no transformations
iex> Cloudinex.Url.for("a_public_id")
"//res.cloudinary.com/my_cloud_name/image/upload/a_public_id"
- A url to the image adjusted to a specific width and height
iex> Cloudinex.Url.for("a_public_id", %{width: 400, height: 300})
"//res.cloudinary.com/my_cloud_name/image/upload/h_300,w_400/a_public_id"
- A url to the image using multiple transformation options and a signature
iex> Cloudinex.Url.for("a_public_id", %{crop: "fill", fetch_format: 'auto', flags: 'progressive', width: 300, height: 254, quality: "jpegmini", sign_url: true})
"//res.cloudinary.com/my_cloud_name/image/upload/s--jwB_Ds4w--/c_fill,f_auto,fl_progressive,h_254,q_jpegmini,w_300/a_public_id"
- A url to a specific version of the image
iex> Cloudinex.Url.for("a_public_id", %{version: 1471959066})
"//res.cloudinary.com/my_cloud_name/image/upload/v1471959066/a_public_id"
- A url to a specific version of the image adjusted to a specific width and height
iex> Cloudinex.Url.for("a_public_id", %{width: 400, height: 300, version: 1471959066})
"//res.cloudinary.com/my_cloud_name/image/upload/h_300,w_400/v1471959066/a_public_id"
The package can be installed
by adding cloudinex
to your list of dependencies in mix.exs
:
def deps do
[{:cloudinex, "~> 0.2.1"}]
end
Authentication is done using Basic Authentication over secure HTTP. Your Cloudinary API Key and API Secret are used for the authentication and can be found here. Configuration is handled via application variables (showing default values):
config :cloudinex,
debug: false,
base_url: "https://api.cloudinary.com/v1_1/",
base_image_url: "https://res.cloudinary.com/",
api_key: "YOUR_API_KEY", #no default
secret: "YOUR_API_SECRET", #no default
cloud_name: "YOUR_CLOUD_NAME", #no default