summaryrefslogtreecommitdiff
path: root/lib/irc/user.ex
diff options
context:
space:
mode:
Diffstat (limited to 'lib/irc/user.ex')
-rw-r--r--lib/irc/user.ex46
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