summaryrefslogtreecommitdiff
path: root/lib/irc/client
diff options
context:
space:
mode:
Diffstat (limited to 'lib/irc/client')
-rw-r--r--lib/irc/client/command.ex11
-rw-r--r--lib/irc/client/command/account.ex10
-rw-r--r--lib/irc/client/command/away.ex10
-rw-r--r--lib/irc/client/command/chghost.ex6
-rw-r--r--lib/irc/client/command/invite.ex9
-rw-r--r--lib/irc/client/command/join.ex10
-rw-r--r--lib/irc/client/command/names.ex10
-rw-r--r--lib/irc/client/command/who.ex12
8 files changed, 40 insertions, 38 deletions
diff --git a/lib/irc/client/command.ex b/lib/irc/client/command.ex
index a84324f..71b7a6b 100644
--- a/lib/irc/client/command.ex
+++ b/lib/irc/client/command.ex
@@ -31,7 +31,7 @@ defmodule Irc.Client.Command do
@doc """
Handles an incoming line.
"""
- @callback handle_line(Irc.Line.t(), Irc.Connection.t()) :: line_return
+ @callback handle_line(conn :: Irc.Connection.t(), line :: Irc.Line.t()) :: line_return
@doc """
Handles an incoming line when in buffering state.
@@ -40,11 +40,16 @@ defmodule Irc.Client.Command do
Postponed lines will be treated as usual (per their respective module) once the buffering state exits.
"""
- @callback handle_buffer(Irc.Line.t(), buffer, Irc.Connection.t()) :: buffer_return
+ @callback handle_buffer(conn :: Irc.Connection.t(), line :: Irc.Line.t(), buffer) :: buffer_return
@doc """
Handles a user requested command.
"""
- @callback handle_command(client_command :: atom, args :: list, Irc.Connection.t()) :: line_return
+ @callback handle_command(conn :: Irc.Connection.t(), client_command :: atom, args :: list) :: line_return
+
+ @doc """
+ Connection is stopped
+ """
+ @callback stop(conn :: Irc.Connection.t(), reason :: atom) :: any()
end
diff --git a/lib/irc/client/command/account.ex b/lib/irc/client/command/account.ex
index c5ec1a9..e0088cd 100644
--- a/lib/irc/client/command/account.ex
+++ b/lib/irc/client/command/account.ex
@@ -1,17 +1,17 @@
defmodule Irc.Client.Command.Account do
- alias Irc.Parser.Line
+ alias Irc.Line
- @type t :: logout :: {:account, Irc.Mask.t} | login :: {:account, Irc.Mask.t, String.t}
+ #@type t :: (logout :: {:account, Irc.Mask.t}) | (login :: {:account, Irc.Mask.t, String.t})
- def init() do
+ def init(_) do
{"ACCOUNT", nil, "account-notify"}
end
- def handle_line(%Line{command: "ACCOUNT", source: target, args: ["*"]}) do
+ def handle_line(_, %Line{command: "ACCOUNT", source: target, args: ["*"]}) do
{:event, {:account, target}}
end
- def handle_line(%Line{command: "ACCOUNT", source: target, args: [account_name]}) do
+ def handle_line(_, %Line{command: "ACCOUNT", source: target, args: [account_name]}) do
{:event, {:account, target, account_name}}
end
diff --git a/lib/irc/client/command/away.ex b/lib/irc/client/command/away.ex
index da8b5ef..3941e5b 100644
--- a/lib/irc/client/command/away.ex
+++ b/lib/irc/client/command/away.ex
@@ -1,13 +1,13 @@
defmodule Irc.Client.Command.Away do
- alias Irc.Parser.Line
+ alias Irc.Line
- @type t :: away :: {:away, Irc.Mask.t, String.t} | unaway :: {:away, Irc.Mask.t}
+ #@type t :: (away :: {:away, Irc.Mask.t, String.t}) | (unaway :: {:away, Irc.Mask.t})
- def init() do
+ def init(_) do
{"AWAY", :away, "away-notify"}
end
- def handle_command(:away, args, _) do
+ def handle_command(_, :away, args) do
command = case args do
[] -> ['AWAY']
[message] -> ['AWAY :', message]
@@ -15,7 +15,7 @@ defmodule Irc.Client.Command.Away do
{:send, command}
end
- def handle_line(%Line{command: "AWAY", source: source, args: args}, _) do
+ def handle_line(_, %Line{command: "AWAY", source: source, args: args}) do
case args do
[] -> {:event, {:away, source}}
[message] -> {:event, {:away, {source, message}}}
diff --git a/lib/irc/client/command/chghost.ex b/lib/irc/client/command/chghost.ex
index 2b4adab..9a59307 100644
--- a/lib/irc/client/command/chghost.ex
+++ b/lib/irc/client/command/chghost.ex
@@ -1,13 +1,13 @@
defmodule Irc.Client.Command.Chghost do
- alias Irc.Parser.Line
+ alias Irc.Line
@type t :: {:chghost, old_mask :: Irc.Mask.t, new_mask :: Irc.Mask.t}
- def init() do
+ def init(_) do
{"CHGHOST", nil, "chghost"}
end
- def handle_line(%Line{source: old_mask, args: [new_user, new_host]}, _) do
+ def handle_line(_, %Line{source: old_mask, args: [new_user, new_host]}) do
new_mask = %Irc.Mask{old_mask | user: new_user, host: new_host}
{:event, {:chghost, old_mask, new_mask}}
end
diff --git a/lib/irc/client/command/invite.ex b/lib/irc/client/command/invite.ex
index 833c2fc..7a14cb8 100644
--- a/lib/irc/client/command/invite.ex
+++ b/lib/irc/client/command/invite.ex
@@ -1,21 +1,20 @@
defmodule Irc.Client.Command.Invite do
- alias Irc.Parser.Line
+ alias Irc.Line
@type invite :: {:invite, channel :: String.t(), inviter :: String.t(), invited_nick :: String.t()}
@type invited :: {:invite, channel :: String.t, inviter :: Irc.Mask.t}
@type t :: invite | invited
- def init() do
+ def init(_) do
{"INVITE", :invite, "invite-notify"}
end
- def handle_line(%Line{command: "INVITE", source: inviter, args: [invited, channel]}) do
+ def handle_line(_, %Line{command: "INVITE", source: inviter, args: [invited, channel]}) do
{:event, {:invite, channel, inviter, invited}}
end
- def handle_line(%Line{command: "INVITE", source: inviter, args: [channel]}) do
+ def handle_line(_, %Line{command: "INVITE", source: inviter, args: [channel]}) do
{:event, {:invite, channel, inviter}}
end
end
-
diff --git a/lib/irc/client/command/join.ex b/lib/irc/client/command/join.ex
index f4728c7..f84dc4a 100644
--- a/lib/irc/client/command/join.ex
+++ b/lib/irc/client/command/join.ex
@@ -1,7 +1,5 @@
defmodule Irc.Client.Command.Join do
- alias Irc.Parser.Line
- require Line
- import Line
+ alias Irc.Line
@type t :: {:join, channel :: String.t()} | {:join, channel :: String.t(), Irc.User.t()}
@@ -10,7 +8,7 @@ defmodule Irc.Client.Command.Join do
end
# An user joined
- def handle_line(line = %Line{command: "JOIN", source: source, args: [channel | args]}, conn) do
+ def handle_line(conn, line = %Line{command: "JOIN", source: source, args: [channel | args]}) do
if Line.self?(line, conn) do
{:event, {:join, channel}}
else
@@ -26,12 +24,12 @@ defmodule Irc.Client.Command.Join do
end
# Join a channel
- def handle_command(:join, [channel], _conn_info) do
+ def handle_command(_, :join, [channel]) do
{:send, ['JOIN', channel]}
end
# Outdated!
- def handle_buffer(%Line{command: "JOIN", source: %Irc.Mask{nick: nick}, args: [channel]}, buffer = %{channel: channel}, %Irc.Connection{nick: nick}) do
+ def handle_buffer(%Irc.Connection{nick: nick}, %Line{command: "JOIN", source: %Irc.Mask{nick: nick}, args: [channel]}, buffer = %{channel: channel}) do
{:finish, nil, {:event, {:join, channel}}}
end
diff --git a/lib/irc/client/command/names.ex b/lib/irc/client/command/names.ex
index b5a84a6..56ff2e9 100644
--- a/lib/irc/client/command/names.ex
+++ b/lib/irc/client/command/names.ex
@@ -1,21 +1,21 @@
defmodule Irc.Client.Command.Names do
- alias Irc.Parser.Line
+ alias Irc.Line
require Irc.Parser.Numeric
import Irc.Parser.Numeric
- def init() do
+ def init(_) do
{[rpl_NAMREPLY(), rpl_ENDOFNAMES()], :names, ["userhost-in-names"]}
end
- def handle_line(%Line{command: rpl_NAMREPLY()}) do
+ def handle_line(_, %Line{command: rpl_NAMREPLY()}) do
:buffer
end
- def handle_line(%Line{command: rpl_ENDOFNAMES(), args: [_, target | _]}) do
+ def handle_line(_, %Line{command: rpl_ENDOFNAMES(), args: [_, target | _]}) do
:finish
end
- def handle_buffer(buffer = [%Line{args: [_, target | _]} | _]) do
+ def handle_buffer(_, buffer = [%Line{args: [_, target | _]} | _]) do
{:event, {:names, target, buffer}}
end
diff --git a/lib/irc/client/command/who.ex b/lib/irc/client/command/who.ex
index 1654ef6..41cc761 100644
--- a/lib/irc/client/command/who.ex
+++ b/lib/irc/client/command/who.ex
@@ -1,5 +1,5 @@
defmodule Irc.Client.Command.Who do
- alias Irc.Parser.Line
+ alias Irc.Line
alias Irc.User
use Irc.Parser.Numeric
@@ -9,7 +9,7 @@ defmodule Irc.Client.Command.Who do
{nil, "WHO", nil}
end
- def handle_command("WHO", [target], conn) do
+ def handle_command(conn, "WHO", [target]) do
args = if Irc.Connection.supports?(conn, "whox") do
" nuhs%cuhsnfdar"
end
@@ -17,12 +17,12 @@ defmodule Irc.Client.Command.Who do
end
@errors [err_NOSUCHSERVER(), rpl_TRYAGAIN()]
- def handle_buffer(%Line{command: error, args: args}, buffer, _conn) when error in @errors do
+ def handle_buffer(conn, %Line{command: error, args: args}, buffer) when error in @errors do
#?
{:buffer, %{buffer | error: {error, args}}}
end
- def handle_buffer(%Line{command: rpl_ENDOFWHO()}, buffer, _conn) do
+ def handle_buffer(conn, %Line{command: rpl_ENDOFWHO()}, buffer) do
result = if buffer.error do
{:error, buffer.error}
else
@@ -31,7 +31,7 @@ defmodule Irc.Client.Command.Who do
{:finish, nil, {:event, {:who, buffer.target, result}}}
end
- def handle_buffer(%Line{command: rpl_WHOREPLY(), args: args}, buffer, conn) do
+ def handle_buffer(conn, %Line{command: rpl_WHOREPLY(), args: args}, buffer) do
case args do
[_, c, u, h, s, n, f, d | a_r] ->
{a,r} = case a_r do
@@ -57,6 +57,6 @@ defmodule Irc.Client.Command.Who do
{:buffer, %{buffer | acc: [args | buffer.acc]}}
end
- def handle_buffer(_, _), do: :postpone
+ def handle_buffer(_, _, _), do: :postpone
end