Packages

The Firebase Admin Elixir SDK

Current section

Files

Jump to
firebase_admin_ex lib messaging android_message config.ex
Raw

lib/messaging/android_message/config.ex

defmodule FirebaseAdminEx.Messaging.AndroidMessage.Config do
@moduledoc """
This module is responsible for representing the
attributes of AndroidMessage.Config.
"""
alias FirebaseAdminEx.Messaging.AndroidMessage.Notification
@keys [
collapse_key: "",
priority: "normal",
ttl: "",
restricted_package_name: "",
data: %{},
notification: %Notification{
title: "",
body: ""
}
]
@type t :: %__MODULE__{
collapse_key: String.t(),
priority: String.t(),
ttl: String.t(),
restricted_package_name: String.t(),
data: map(),
notification: struct()
}
@derive Jason.Encoder
defstruct @keys
# Public API
def new(attributes \\ %{}) do
%__MODULE__{
collapse_key: Map.get(attributes, :collapse_key),
priority: Map.get(attributes, :priority),
ttl: Map.get(attributes, :ttl),
restricted_package_name: Map.get(attributes, :restricted_package_name),
data: Map.get(attributes, :data, %{}),
notification: Notification.new(attributes)
}
end
def validate(%__MODULE__{data: _, notification: nil}),
do: {:error, "[AndroidMessage.Config] notification is missing"}
def validate(%__MODULE__{data: _, notification: notification} = message_config) do
case Notification.validate(notification) do
{:ok, _} ->
{:ok, message_config}
{:error, error_message} ->
{:error, error_message}
end
end
def validate(_), do: {:error, "[AndroidMessage.Config] Invalid payload"}
end