diff options
author | Anne-Gwenn Kettunen <uniaika@crypto-keupone.eu> | 2016-03-07 23:58:06 +0100 |
---|---|---|
committer | Anne-Gwenn Kettunen <uniaika@crypto-keupone.eu> | 2016-03-07 23:58:06 +0100 |
commit | 6958b4652c905b0b6c181c6a77f78a53f7a4134e (patch) | |
tree | 17827d83c2d586b9a37df08ec09dac84c82da71a /lib | |
parent | a few more corrections and a WiP on the examples (diff) |
using structs
Diffstat (limited to 'lib')
-rw-r--r-- | lib/exirc/client.ex | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/lib/exirc/client.ex b/lib/exirc/client.ex index 66354dc..5cddc98 100644 --- a/lib/exirc/client.ex +++ b/lib/exirc/client.ex @@ -31,6 +31,9 @@ defmodule ExIrc.Client do channels: [], debug?: false end + defmodule SenderInfo do + defstruct nick: nil, host: nil, user: nil + end ################# # External API @@ -628,7 +631,7 @@ defmodule ExIrc.Client do end # Called when someone else in our channel leaves def handle_data(%IrcMessage{:cmd => "PART", :nick => from, :host => host, :user => user} = msg, state) do - sender = %{:nick => from, :host => host, :user => user} + sender = %SenderInfo{:nick => from, :host => host, :user => user} channel = msg.args |> List.first |> String.strip if state.debug?, do: debug "#{from} LEFT A CHANNEL: #{channel}" channels = Channels.user_part(state.channels, channel, from) @@ -651,35 +654,35 @@ defmodule ExIrc.Client do end # Called when we are invited to a channel def handle_data(%IrcMessage{:cmd => "INVITE", :args => [nick, channel], :nick => by, :host => host, :user => user} = msg, %ClientState{:nick => nick} = state) do - sender = %{:nick => by, :host => host, :user => user} + sender = %SenderInfo{:nick => by, :host => host, :user => user} if state.debug?, do: debug "RECEIVED AN INVITE: #{msg.args |> Enum.join(" ")}" send_event {:invited, sender, channel}, state {:noreply, state} end # Called when we are kicked from a channel def handle_data(%IrcMessage{:cmd => "KICK", :args => [channel, nick], :nick => by, :host => host, :user => user} = _msg, %ClientState{:nick => nick} = state) do - sender = %{:nick => by, :host => host, :user => user} + sender = %SenderInfo{:nick => by, :host => host, :user => user} if state.debug?, do: debug "WE WERE KICKED FROM #{channel} BY #{by}" send_event {:kicked, sender, channel}, state {:noreply, state} end # Called when someone else was kicked from a channel def handle_data(%IrcMessage{:cmd => "KICK", :args => [channel, nick], :nick => by, :host => host, :user => user} = _msg, state) do - sender = %{:nick => by, :host => host, :user => user} + sender = %SenderInfo{:nick => by, :host => host, :user => user} if state.debug?, do: debug "#{nick} WAS KICKED FROM #{channel} BY #{by}" send_event {:kicked, nick, sender, channel}, state {:noreply, state} end # Called when someone sends us a message def handle_data(%IrcMessage{:nick => from, :cmd => "PRIVMSG", :args => [nick, message], :host => host, :user => user} = _msg, %ClientState{:nick => nick} = state) do - sender = %{:nick => from, :host => host, :user => user} + sender = %SenderInfo{:nick => from, :host => host, :user => user} if state.debug?, do: debug "#{from} SENT US #{message}" send_event {:received, message, sender}, state {:noreply, state} end # Called when someone sends a message to a channel we're in, or a list of users def handle_data(%IrcMessage{:nick => from, :cmd => "PRIVMSG", :args => [to, message], :host => host, :user => user} = _msg, %ClientState{:nick => nick} = state) do - sender = %{:nick => from, :host => host, :user => user} + sender = %SenderInfo{:nick => from, :host => host, :user => user} if state.debug?, do: debug "#{from} SENT #{message} TO #{to}" send_event {:received, message, sender, to}, state # If we were mentioned, fire that event as well @@ -688,7 +691,7 @@ defmodule ExIrc.Client do end # Called when someone uses ACTION, i.e. `/me dies` def handle_data(%IrcMessage{:nick => from, :cmd => "ACTION", :args => [channel, message], :host => host, :user => user} = _msg, state) do - sender = %{:nick => from, :host => host, :user => user} + sender = %SenderInfo{:nick => from, :host => host, :user => user} if state.debug?, do: debug "* #{from} #{message} in #{channel}" send_event {:me, message, sender, channel}, state {:noreply, state} |