diff options
Diffstat (limited to 'lib/irc/client')
-rw-r--r-- | lib/irc/client/command.ex | 11 | ||||
-rw-r--r-- | lib/irc/client/command/account.ex | 10 | ||||
-rw-r--r-- | lib/irc/client/command/away.ex | 10 | ||||
-rw-r--r-- | lib/irc/client/command/chghost.ex | 6 | ||||
-rw-r--r-- | lib/irc/client/command/invite.ex | 9 | ||||
-rw-r--r-- | lib/irc/client/command/join.ex | 10 | ||||
-rw-r--r-- | lib/irc/client/command/names.ex | 10 | ||||
-rw-r--r-- | lib/irc/client/command/who.ex | 12 |
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 |