defmodule LineMessage.Message do def text(txt), do: text([], txt) def text(messages, txt) do messages ++ [%{ type: "text", text: txt }] end def image(origin_url, preview_url), do: image([], origin_url, preview_url) def image(messages, origin_url, preview_url) do messages ++ [%{ type: "image", originContentUrl: origin_url, previewImageUrl: preview_url }] end def video(origin_url, preview_url), do: video([], origin_url, preview_url) def video(messages, origin_url, preview_url) do messages ++ [%{ type: "video", originContentUrl: origin_url, previewImageUrl: preview_url }] end def audio(origin_url, duration), do: image([], origin_url, duration) def audio(messages, origin_url, duration) do messages ++ [%{ type: "audio", originContentUrl: origin_url, duration: duration }] end def location(title, address, latitude, longitude) do location([], title, address, latitude, longitude) end def location(messages, title, address, latitude, longitude) do messages ++ [%{ type: "location", title: title, address: address, latitude: latitude, longitude: longitude }] end def sticker(package_id, sticker_id), do: sticker([], package_id, sticker_id) def sticker(messages, package_id, sticker_id) do messages ++ [%{ type: "sticker", packageId: package_id, stickerId: sticker_id }] end def imagemap(alt_text, base_content = %{url: _, height: _, width: _}, actions) do imagemap([], alt_text, base_content, actions) end def imagemap(messages, alt_text, %{url: url, height: base_height, width: base_width}, actions) when is_list(actions) do messages ++ [%{ type: "imagemap", baseUrl: url, altText: alt_text, baseSize: %{ height: base_height, width: base_width }, actions: actions }] end defmodule Template do def button(alt_text, content = %{image: _, title: _, text: _, actions: _}) do button([], alt_text, content) end def button(messages, alt_text, %{image: image, title: title, text: text, actions: actions}) do template(messages, alt_text, %{ type: "buttons", thumbnailImageUrl: image, title: title, text: text, actions: actions }) end def confirm(alt_text, content = %{text: _, actions: _}) do confirm([], alt_text, content) end def confirm(messages, alt_text, %{text: text, actions: actions}) do template(messages, alt_text, %{ type: "confirm", text: text, actions: actions }) end defp template(messages, alt_text, temp) do messages ++ [%{ type: "template", altText: alt_text, template: temp }] end end end