diff --git a/lib/cloudex.ex b/lib/cloudex.ex index 3f03344..e0c099c 100644 --- a/lib/cloudex.ex +++ b/lib/cloudex.ex @@ -71,7 +71,11 @@ defmodule Cloudex do defp sanitize_list([item | tail], sanitized_list) do result = - if Regex.match?(~r/^(http|s3)/, item), do: {:ok, item}, else: handle_file_or_directory(item) + if Regex.match?(~r/^(http|s3)|(base64)/, item) do + {:ok, item} + else + handle_file_or_directory(item) + end new_list = [result | sanitized_list] sanitize_list(tail, new_list) diff --git a/lib/cloudex/cloudinary_api.ex b/lib/cloudex/cloudinary_api.ex index eb55962..54ab2cb 100644 --- a/lib/cloudex/cloudinary_api.ex +++ b/lib/cloudex/cloudinary_api.ex @@ -84,7 +84,7 @@ defmodule Cloudex.CloudinaryApi do end @spec upload_file(String.t(), map) :: {:ok, %Cloudex.UploadedImage{}} | {:error, any} - defp upload_file(file_path, opts) do + defp upload_file(file, opts) do options = opts |> extract_cloudinary_opts @@ -93,9 +93,11 @@ defmodule Cloudex.CloudinaryApi do |> unify |> Map.to_list() - body = {:multipart, [{:file, file_path} | options]} + body_type = if Regex.match?(~r/base64/, file), do: :form, else: :multipart - post(body, file_path, opts) + body = {body_type, [{:file, file} | options]} + + post(body, file, opts) end @spec extract_cloudinary_opts(map) :: map