View Source Bonfire.Common.Media (Bonfire v0.9.10-classic-beta.169)
Helpers for handling images and other media
Summary
Functions
Takes a Media map (or an object containing one) and returns the avatar's URL.
Takes a Media map (or an object containing one) and returns the avatar's URL.
Takes a Media map (or an object containing one) and returns the banner's URL.
Returns a map containing all files and their contents from a tar or compressed tar.gz archive.
Takes a Media map (or an object containing one) and returns the image's URL.
Determines the dominant color for a given user’s avatar or banner.
Takes a Media map (or an object containing one) and returns a URL for the media.
Reads specific files from a tar archive and returns their contents.
Takes a Media map (or an object containing one) and returns the thumbnail's URL.
Functions
Takes a Media map (or an object containing one) and returns the avatar's URL.
Examples
iex> avatar_media(%{profile: %{icon: "http://example.com/avatar.png"}})
%Media{...}
iex> avatar_media(%{icon: "http://example.com/icon.png"})
%Media{...}
iex> avatar_media(%{profile: %{icon: %{path: "http://example.com/path.png"}}})
%Media{...}
iex> avatar_media(%{nonexistent_key: "value"})
nil
Takes a Media map (or an object containing one) and returns the avatar's URL.
Examples
iex> avatar_url(%{profile: %{icon: %{url: "http://example.com/avatar.png"}}})
"http://example.com/avatar.png"
iex> avatar_url(%{icon: %{path: "http://example.com/path.png"}})
"http://example.com/path.png"
iex> avatar_url(%{icon_id: "icon123"})
# Assume Bonfire.Files.IconUploader.remote_url/1 returns "http://example.com/icon123.png"
"http://example.com/icon123.png"
iex> avatar_url(%{path: "image.jpg"})
# Assume Bonfire.Files.IconUploader.remote_url/1 returns "http://example.com/image.jpg"
"http://example.com/image.jpg"
iex> avatar_url(%{icon: "http://example.com/icon.png"})
"http://example.com/icon.png"
iex> avatar_url(%{image: "http://example.com/image.png"})
"http://example.com/image.png"
iex> avatar_url(%{id: "user123", shared_user: nil})
# Assume avatar_fallback/1 returns "/images/avatar.png"
"/images/avatar.png"
iex> avatar_url(%{id: "user456", shared_user: %{id: "shared123"}})
"https://picsum.photos/seed/user456/128/128?blur"
iex> avatar_url(%{id: "user789"})
# Assume avatar_fallback/1 returns "/images/avatar.png"
"/images/avatar.png"
Takes a Media map (or an object containing one) and returns the banner's URL.
Examples
iex> banner_url(%{profile: %{image: %{id: "banner123"}}})
# Assume Bonfire.Files.BannerUploader.remote_url/1 returns "http://example.com/banner123.png"
"http://example.com/banner123.png"
iex> banner_url(%{image: %{url: "http://example.com/banner.png"}})
"http://example.com/banner.png"
iex> banner_url(%{image: %{path: "http://example.com/banner.png"}})
"http://example.com/banner.png"
iex> banner_url(%{path: "http://example.com/banner.png"})
"http://example.com/banner.png"
iex> banner_url(%{image_id: "banner456"})
# Assume Bonfire.Files.BannerUploader.remote_url/1 returns "http://example.com/banner456.png"
"http://example.com/banner456.png"
iex> banner_url(%{image: "http://example.com/banner.png"})
"http://example.com/banner.png"
iex> banner_url(%{profile: %{image: %{id: "banner789"}}})
# Assume Bonfire.Files.BannerUploader.remote_url/1 returns "http://example.com/banner789.png"
"http://example.com/banner789.png"
iex> banner_url(%{nonexistent_key: "value"})
# Assume banner_fallback/0 returns "/images/bonfires.png"
"/images/bonfires.png"
Returns a map containing all files and their contents from a tar or compressed tar.gz archive.
Examples
iex> extract_tar("path/to/archive.tar.gz")
%{"file1.txt" => <<...>> , "file2.txt" => <<...>>}
iex> extract_tar("path/to/archive.tar", [:memory])
%{"file1.txt" => <<...>> , "file2.txt" => <<...>>}
iex> extract_tar("path/to/archive.tar", [:compressed, :memory])
%{"file1.txt" => <<...>> , "file2.txt" => <<...>>}
Takes a Media map (or an object containing one) and returns the image's URL.
Examples
iex> image_url("http://example.com/image.png")
"http://example.com/image.png"
iex> image_url(%{media_type: "text/plain"})
nil
iex> image_url(%{profile: %{image: %{url: "http://example.com/image.png"}}})
"http://example.com/image.png"
iex> image_url(%{image: %{url: "http://example.com/image.png"}})
"http://example.com/image.png"
iex> image_url(%{icon: %{path: "http://example.com/image.png"}})
"http://example.com/image.png"
iex> image_url(%{path: "http://example.com/image.png"})
"http://example.com/image.png"
iex> image_url(%{image_id: "image123"})
# Assume Bonfire.Files.ImageUploader.remote_url/1 returns "http://example.com/image123.png"
"http://example.com/image123.png"
iex> image_url(%{image: "http://example.com/image.png"})
"http://example.com/image.png"
iex> image_url(%{profile: %{image: "http://example.com/profile_image.png"}})
"http://example.com/profile_image.png"
iex> image_url(%{nonexistent_key: "value"})
nil
maybe_dominant_color(user, avatar_url \\ nil, banner_url \\ nil, banner_fallback \\ nil)
View SourceDetermines the dominant color for a given user’s avatar or banner.
Examples
iex> maybe_dominant_color(%{profile: %{icon: "http://example.com/avatar.png"}})
"#AA4203" # Example dominant color
iex> maybe_dominant_color(%{profile: %{icon: "http://example.com/avatar.png"}}, nil, "http://example.com/banner.png")
"#AA4203" # Example dominant color
iex> maybe_dominant_color(%{profile: %{icon: "http://example.com/avatar.png"}}, nil, nil, "/images/bonfires.png")
"#AA4203" # Example dominant color
iex> maybe_dominant_color(%{profile: %{icon: nil}}, "http://example.com/banner.png")
nil
Takes a Media map (or an object containing one) and returns a URL for the media.
Examples
iex> media_url(%{path: "http://example.com/image.jpg"})
"http://example.com/image.jpg"
iex> media_url(%{path: "remote.jpg", metadata: %{"module" => "MyModule"}})
# Assume MyModule.remote_url/1 is defined and returns "http://example.com/remote.jpg"
"http://example.com/remote.jpg"
iex> media_url(%{media_type: "image/jpeg", path: "image.jpg"})
"http://image.jpg"
iex> media_url(%{media_type: "text/plain", path: "document.txt"})
"http://document.txt"
iex> media_url(%{changes: %{path: "http://changed.example.com/image.jpg"}})
"http://changed.example.com/image.jpg"
iex> media_url(%{path: "image.jpg"})
"http://image.jpg"
iex> media_url(%{media: %{path: "http://nested.example.com/image.jpg"}})
"http://nested.example.com/image.jpg"
iex> media_url(%{nonexistent_key: "value"})
nil
read_tar_files(archive, file_or_files, opts \\ [:compressed, :verbose])
View SourceReads specific files from a tar archive and returns their contents.
Examples
iex> read_tar_files("path/to/archive.tar", "file1.txt")
{:ok, "file1 contents"}
iex> read_tar_files("path/to/archive.tar", ["file1.txt", "file2.txt"])
{:ok, ["file1 contents", "file2 contents"]}
iex> read_tar_files("path/to/nonexistent.tar", "file1.txt")
{:error, "File not found"}
iex> read_tar_files("path/to/archive.tar", "nonexistent_file.txt")
{:error, "File not found"}
Takes a Media map (or an object containing one) and returns the thumbnail's URL.
Examples
iex> thumbnail_url(%{path: "thumbnail.jpg", metadata: %{"module" => "MyModule"}})
# Assume MyModule.remote_url/2 with :thumbnail returns "http://example.com/thumbnail.jpg"
"http://example.com/thumbnail.jpg"
iex> thumbnail_url(%{media_type: "image/jpeg", path: "thumbnail.jpg"})
"http://thumbnail.jpg"
iex> thumbnail_url(%{media_type: "video/mp4", path: "video.mpeg"})
# Assume Bonfire.Files.VideoUploader.remote_url/2 with :thumbnail returns "http://video-thumbnail.jpg"
"http://video-thumbnail.jpg"
iex> thumbnail_url(%{path: "document.pdf", media_type: "document"})
# Assume Bonfire.Files.DocumentUploader.remote_url/2 with :thumbnail returns "http://document-thumbnail.jpg"
"http://document-thumbnail.jpg"
iex> thumbnail_url(%{nonexistent_key: "value"})
nil