Current section

Files

Jump to
fcmex lib payload.ex
Raw

lib/payload.ex

defmodule Fcmex.Payload do
@moduledoc ~S"
Create a payload
"
defstruct [
:to,
:registration_ids,
:notification,
:data,
:priority,
:time_to_live,
:collapse_key
]
@defaults [
notification: %{},
data: %{},
priority: "high",
time_to_live: nil,
collapse_key: nil
]
def create(to, opts) do
%__MODULE__{}
|> Map.merge(opts(to, opts))
end
def opts(to, opts) do
@defaults
|> put_destination(to)
|> Keyword.merge(opts)
|> Enum.reject(&(elem(&1, 1) |> is_nil))
|> Enum.into(%{})
end
def put_destination(opts, to) when is_binary(to), do: Keyword.merge(opts, to: to)
def put_destination(opts, to) when is_list(to) and length(to) > 0,
do: Keyword.merge(opts, registration_ids: to)
end