removed *Ex Callbacks in favor of all callbacks having *Connection
All checks were successful
irc build / Build (push) Successful in 1m36s

passed to them
This commit is contained in:
blackbeard420 2025-03-06 22:40:07 -05:00
parent 9b84bb10db
commit ceb1d3dd1a
3 changed files with 25 additions and 45 deletions

58
irc.go
View File

@ -18,22 +18,18 @@ const (
// Connection holds the callbacks for the client // Connection holds the callbacks for the client
type Connection struct { type Connection struct {
Sock net.Conn Sock net.Conn
DirectCallback func(string, string) DirectCallback func(*Connection, string, string)
PrivmsgCallback func(string, string, string) PrivmsgCallback func(*Connection, string, string, string)
JoinCallback func(string, string) JoinCallback func(*Connection, string, string)
QuitCallback func(string, string) QuitCallback func(*Connection, string, string)
PartCallback func(string, string, string) PartCallback func(*Connection, string, string, string)
NickCallback func(string, string) NickCallback func(*Connection, string, string)
NumericCallback func(string, int, string) NumericCallback func(*Connection, string, int, string)
PrivmsgCallbackEx func(*Connection, string, string, string) joined bool
JoinCallbackEx func(*Connection, string, string) channels []string
QuitCallbackEx func(*Connection, string, string) curNick string
PartCallbackEx func(*Connection, string, string, string) userList map[string][]string
joined bool
channels []string
curNick string
userList map[string][]string
} }
func cleanInput(msg string) string { func cleanInput(msg string) string {
@ -248,7 +244,7 @@ func (c *Connection) parseMessage(line string) {
if c.NumericCallback != nil { if c.NumericCallback != nil {
code, _ := strconv.Atoi(cmd) code, _ := strconv.Atoi(cmd)
c.NumericCallback(from, code, args) c.NumericCallback(c, from, code, args)
} }
} else { } else {
t := strings.SplitN(args, ":", 2) t := strings.SplitN(args, ":", 2)
@ -262,43 +258,27 @@ func (c *Connection) parseMessage(line string) {
case "privmsg": case "privmsg":
if target != c.curNick { if target != c.curNick {
if c.PrivmsgCallback != nil { if c.PrivmsgCallback != nil {
c.PrivmsgCallback(target, from, msg) c.PrivmsgCallback(c, target, from, msg)
}
if c.PrivmsgCallbackEx != nil {
c.PrivmsgCallbackEx(c, target, from, msg)
} }
} else { } else {
if c.DirectCallback != nil { if c.DirectCallback != nil {
c.DirectCallback(from, msg) c.DirectCallback(c, from, msg)
} }
} }
case "join": case "join":
c.addNick(msg, GetNick(from)) c.addNick(msg, GetNick(from))
if c.JoinCallback != nil { if c.JoinCallback != nil {
c.JoinCallback(from, msg) c.JoinCallback(c, from, msg)
}
if c.JoinCallbackEx != nil {
c.JoinCallbackEx(c, from, msg)
} }
case "quit": case "quit":
c.removeNickAllChans(GetNick(from)) c.removeNickAllChans(GetNick(from))
if c.QuitCallback != nil { if c.QuitCallback != nil {
c.QuitCallback(from, msg) c.QuitCallback(c, from, msg)
}
if c.QuitCallbackEx != nil {
c.QuitCallbackEx(c, from, msg)
} }
case "part": case "part":
c.removeNick(target, GetNick(from)) c.removeNick(target, GetNick(from))
if c.PartCallback != nil { if c.PartCallback != nil {
c.PartCallback(from, target, msg) c.PartCallback(c, from, target, msg)
}
if c.PartCallbackEx != nil {
c.PartCallbackEx(c, from, target, msg)
} }
case "nick": case "nick":
if GetNick(from) == c.curNick { if GetNick(from) == c.curNick {
@ -306,7 +286,7 @@ func (c *Connection) parseMessage(line string) {
log.Printf("BOT NICK CHANGED TO: %s\n", c.curNick) log.Printf("BOT NICK CHANGED TO: %s\n", c.curNick)
} }
if c.NickCallback != nil { if c.NickCallback != nil {
c.NickCallback(from, msg) c.NickCallback(c, from, msg)
} }
default: default:
//log.Printf("unhandled command: %s %s %s", cmd, target, msg) //log.Printf("unhandled command: %s %s %s", cmd, target, msg)

View File

@ -21,7 +21,7 @@ func GetServerInfo(server, nick string) ServerInfo {
con := NewConnection(server, nick, nick, nil, nil) con := NewConnection(server, nick, nick, nil, nil)
con.NumericCallback = func(from string, i int, args string) { con.NumericCallback = func(c *Connection, from string, i int, args string) {
switch i { switch i {
case RPL_LUSERCLIENT: case RPL_LUSERCLIENT:
s := strings.Split(args, ":") s := strings.Split(args, ":")

View File

@ -9,7 +9,7 @@ import (
) )
const ( const (
channel = "#testing" channel = "#test"
) )
func TestJoinChannel(t *testing.T) { func TestJoinChannel(t *testing.T) {
@ -39,7 +39,7 @@ func TestJoinChannel(t *testing.T) {
func TestJoinCallback(t *testing.T) { func TestJoinCallback(t *testing.T) {
con := NewConnection("irc.ouch.chat:6667", "irc-go", "irc-go", nil, []string{channel}) con := NewConnection("irc.ouch.chat:6667", "irc-go", "irc-go", nil, []string{channel})
i := 0 i := 0
con.JoinCallback = func(from, target string) { con.JoinCallback = func(c *Connection, from, target string) {
i++ i++
for _, x := range con.userList[channel] { for _, x := range con.userList[channel] {
con.SendPrivmsg(channel, x) con.SendPrivmsg(channel, x)
@ -72,7 +72,7 @@ func TestJoinCallback(t *testing.T) {
func TestLusers(t *testing.T) { func TestLusers(t *testing.T) {
con := NewConnection("irc.ouch.chat:6667", "irc-go", "irc-go", nil, []string{channel}) con := NewConnection("irc.ouch.chat:6667", "irc-go", "irc-go", nil, []string{channel})
con.NumericCallback = func(from string, i int, args string) { con.NumericCallback = func(c *Connection, from string, i int, args string) {
if i == RPL_LUSERCLIENT { if i == RPL_LUSERCLIENT {
con.SendJoin(channel) con.SendJoin(channel)
@ -94,7 +94,7 @@ func TestLusers(t *testing.T) {
func TestLusersChannels(t *testing.T) { func TestLusersChannels(t *testing.T) {
con := NewConnection("irc.ouch.chat:6667", "irc-go", "irc-go", nil, []string{channel}) con := NewConnection("irc.ouch.chat:6667", "irc-go", "irc-go", nil, []string{channel})
con.NumericCallback = func(from string, i int, args string) { con.NumericCallback = func(c *Connection, from string, i int, args string) {
if i == RPL_LUSERCHANNELS { if i == RPL_LUSERCHANNELS {
con.SendJoin(channel) con.SendJoin(channel)
@ -115,7 +115,7 @@ func TestLusersChannels(t *testing.T) {
func TestGetServerInfo(t *testing.T) { func TestGetServerInfo(t *testing.T) {
con := NewConnection("irc.ouch.chat:6667", "irc-go", "irc-go", nil, []string{channel}) con := NewConnection("irc.ouch.chat:6667", "irc-go", "irc-go", nil, []string{channel})
con.NumericCallback = func(from string, i int, args string) { con.NumericCallback = func(c *Connection, from string, i int, args string) {
if i == RPL_ENDOFMOTD { if i == RPL_ENDOFMOTD {
go func() { go func() {
res := GetServerInfo("irc.libera.chat:6667", "irc-go4240") res := GetServerInfo("irc.libera.chat:6667", "irc-go4240")