diff options
Diffstat (limited to 'lib/irc/user.ex')
-rw-r--r-- | lib/irc/user.ex | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/lib/irc/user.ex b/lib/irc/user.ex new file mode 100644 index 0000000..5e2f526 --- /dev/null +++ b/lib/irc/user.ex @@ -0,0 +1,46 @@ +defmodule Irc.User do + + @moduledoc """ + Represents an IRC user. + + Not all field may be returned in events. + """ + + defstruct [ + :nick, + :user, + :host, + :name, + :account, + :server, + :idle, + :away, + :connected_at, + {:operator, false}, + {:modes, []}, + {:chanmodes, %{}}, + {:channels, []}, + ] + @type t :: %__MODULE__{ + nick: String.t(), + user: nil | String.t(), + host: nil | String.t(), + name: nil | String.t(), + account: nil | String.t(), + server: nil | String.t(), + idle: nil | {non_neg_integer(), NaiveDateTime.t()}, + operator: boolean(), + modes: [], + channels: [], + chanmodes: %{String.t() => String.t()} + } + + def from_mask(%Irc.Mask{user: user, nick: nick, host: host}) when is_binary(nick) do + %__MODULE__{nick: nick, user: user, host: host} + end + + def to_mask(%__MODULE__{nick: nick, user: user, host: host}) do + Irc.Mask.new(nick, user, host) + end + +end |