Current section
Files
Jump to
Current section
Files
lib/slack/channel.ex
defmodule Slack.Channel do
@moduledoc ~S"""
A Slack channel.
"""
@typedoc @moduledoc
@type t :: %__MODULE__{
id: String.t(),
name: String.t()
}
@enforce_keys [
:id,
:name
]
defstruct @enforce_keys
@doc ~S"""
Parse Slack channel.
"""
@spec parse(map) ::
{:ok, t} | {:error, :channel_missing_id | :channel_missing_name | :invalid_channel}
def parse(data = %{}) do
id = MapX.get(data, :id)
name = MapX.get(data, :name)
cond do
is_nil(id) -> {:error, :channel_missing_id}
is_nil(name) -> {:error, :channel_missing_name}
:valid -> {:ok, %__MODULE__{id: id, name: name}}
end
end
def parse(_), do: {:error, :invalid_channel}
end