Current section

Files

Jump to
messenger_bot lib messenger_bot components message attachment.ex
Raw

lib/messenger_bot/components/message/attachment.ex

defmodule MessengerBot.Component.Message.Attachment do
@moduledoc """
Structure and type for attachment
"""
alias MessengerBot.Component.Message.{ButtonTemplatePayload,
GenericTemplatePayload, ListTemplatePayload, OpenGraphTemplatePayload}
@derive [Poison.Encoder]
defstruct [:type, :payload]
@type t :: %__MODULE__{
type: String.t,
payload: ButtonTemplatePayload.t | GenericTemplatePayload.t |
ListTemplatePayload.t | Map.t
}
@spec button_template(ButtonTemplatePayload.t) :: __MODULE__.t
def button_template(%ButtonTemplatePayload{} =
button_template_payload) do
%__MODULE__{type: "template", payload: button_template_payload}
end
@spec generic_template(GenericTemplatePayload.t) :: __MODULE__.t
def generic_template(%GenericTemplatePayload{} = generic_template_payload) do
%__MODULE__{type: "template", payload: generic_template_payload}
end
@spec open_graph_template(OpenGraphTemplatePayload.t) :: __MODULE__.t
def open_graph_template(%OpenGraphTemplatePayload{} =
open_graph_template_payload) do
%__MODULE__{type: "template", payload: open_graph_template_payload}
end
@spec list_template(ListTemplatePayload.t) :: __MODULE__.t
def list_template(%ListTemplatePayload{} = list_template_payload) do
%__MODULE__{type: "template", payload: list_template_payload}
end
@spec audio_attachment(String.t) :: __MODULE__.t
def audio_attachment(url) do
%__MODULE__{type: "audio", payload: %{url: url}}
end
@spec file_attachment(String.t) :: __MODULE__.t
def file_attachment(url) do
%__MODULE__{type: "file", payload: %{url: url}}
end
@spec image_attachment(String.t) :: __MODULE__.t
def image_attachment(url) do
%__MODULE__{type: "image", payload: %{url: url}}
end
@spec video_attachment(String.t) :: __MODULE__.t
def video_attachment(url) do
%__MODULE__{type: "video", payload: %{url: url}}
end
end