renamed IrcConnection to Connection
This commit is contained in:
parent
e806485b5f
commit
c57e7a4b12
46
irc.go
46
irc.go
@ -10,7 +10,8 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
type IrcConnection struct {
|
//Connection holds the callbacks for the client
|
||||||
|
type Connection struct {
|
||||||
Sock net.Conn
|
Sock net.Conn
|
||||||
privmsgCallback func(string, string, string)
|
privmsgCallback func(string, string, string)
|
||||||
joinCallback func(string, string)
|
joinCallback func(string, string)
|
||||||
@ -21,54 +22,63 @@ type IrcConnection struct {
|
|||||||
channels []string
|
channels []string
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *IrcConnection) SendPong(ping string) {
|
//SendPong replies to the recieved PING
|
||||||
|
func (c *Connection) SendPong(ping string) {
|
||||||
pong := strings.Replace(ping, "PING", "PONG", 1)
|
pong := strings.Replace(ping, "PING", "PONG", 1)
|
||||||
c.Sock.Write([]byte(fmt.Sprintf("%s\n", pong)))
|
c.Sock.Write([]byte(fmt.Sprintf("%s\n", pong)))
|
||||||
log.Println("pong sent")
|
log.Println("pong sent")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *IrcConnection) SendPrivmsg(channel, msg string) {
|
//SendPrivmsg sends a privmsg to channel/target
|
||||||
|
func (c *Connection) SendPrivmsg(channel, msg string) {
|
||||||
_, err := c.Sock.Write([]byte(fmt.Sprintf("PRIVMSG %s :%s\n", channel, msg)))
|
_, err := c.Sock.Write([]byte(fmt.Sprintf("PRIVMSG %s :%s\n", channel, msg)))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("Error sending private message: %s\n", err.Error())
|
log.Printf("Error sending private message: %s\n", err.Error())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *IrcConnection) SendNotice(channel, msg string) {
|
//SendNotice sends a notice to channel/target
|
||||||
|
func (c *Connection) SendNotice(channel, msg string) {
|
||||||
_, err := c.Sock.Write([]byte(fmt.Sprintf("NOTICE %s :%s\n", channel, msg)))
|
_, err := c.Sock.Write([]byte(fmt.Sprintf("NOTICE %s :%s\n", channel, msg)))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("Error sending NOTICE message: %s\n", err.Error())
|
log.Printf("Error sending NOTICE message: %s\n", err.Error())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *IrcConnection) SendNick(nick string) {
|
//SendNick changes the clients nick
|
||||||
|
func (c *Connection) SendNick(nick string) {
|
||||||
c.Sock.Write([]byte(fmt.Sprintf("NICK %s\n", nick)))
|
c.Sock.Write([]byte(fmt.Sprintf("NICK %s\n", nick)))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *IrcConnection) SendJoin(channel string) {
|
//SendJoin sends a JOIN
|
||||||
|
func (c *Connection) SendJoin(channel string) {
|
||||||
c.Sock.Write([]byte(fmt.Sprintf("JOIN %s\n", channel)))
|
c.Sock.Write([]byte(fmt.Sprintf("JOIN %s\n", channel)))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *IrcConnection) SendPart(channel, msg string) {
|
//SendPart sends a PART
|
||||||
|
func (c *Connection) SendPart(channel, msg string) {
|
||||||
c.Sock.Write([]byte(fmt.Sprintf("PART %s :%s\n", channel, msg)))
|
c.Sock.Write([]byte(fmt.Sprintf("PART %s :%s\n", channel, msg)))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *IrcConnection) SendQuit(msg string) {
|
//SendQuit sends a QUIT
|
||||||
|
func (c *Connection) SendQuit(msg string) {
|
||||||
c.Sock.Write([]byte(fmt.Sprintf("QUIT :%s\n", msg)))
|
c.Sock.Write([]byte(fmt.Sprintf("QUIT :%s\n", msg)))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *IrcConnection) DelayedSend(sock net.Conn, dur time.Duration, channel, msg string) {
|
//SendNames sends a NAMES request for the channel
|
||||||
|
func (c *Connection) SendNames(channel string) {
|
||||||
|
c.Sock.Write([]byte(fmt.Sprintf("NAMES %s\n", channel)))
|
||||||
|
}
|
||||||
|
|
||||||
|
//DelayedSend sends a privmsg AFTER the specified delay
|
||||||
|
func (c *Connection) DelayedSend(sock net.Conn, dur time.Duration, channel, msg string) {
|
||||||
time.Sleep(dur)
|
time.Sleep(dur)
|
||||||
c.SendPrivmsg(channel, msg)
|
c.SendPrivmsg(channel, msg)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *IrcConnection) Names(channel string) {
|
//NewConnection creates and connects an Connection
|
||||||
c.Sock.Write([]byte(fmt.Sprintf("NAMES %s\n", channel)))
|
func NewConnection(server, nick, user, pass string, chans []string) *Connection {
|
||||||
}
|
irc := &Connection{channels: chans}
|
||||||
|
|
||||||
//NewIrcConnection creates and connects an IrcConnection
|
|
||||||
func NewIrcConnection(server, nick, user, pass string) *IrcConnection {
|
|
||||||
irc := &IrcConnection{}
|
|
||||||
|
|
||||||
sock, err := net.Dial("tcp", server)
|
sock, err := net.Dial("tcp", server)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -85,7 +95,7 @@ func getNick(name string) string {
|
|||||||
return strings.Split(name, "!")[0]
|
return strings.Split(name, "!")[0]
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *IrcConnection) parseMessage(line string) {
|
func (c *Connection) parseMessage(line string) {
|
||||||
if line[0] == ':' {
|
if line[0] == ':' {
|
||||||
buf := line[1:]
|
buf := line[1:]
|
||||||
params := strings.SplitN(buf, " ", 3)
|
params := strings.SplitN(buf, " ", 3)
|
||||||
@ -138,7 +148,7 @@ func (c *IrcConnection) parseMessage(line string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//Run runs the irc event loop
|
//Run runs the irc event loop
|
||||||
func (c *IrcConnection) Run() {
|
func (c *Connection) Run() {
|
||||||
rdr := bufio.NewScanner(c.Sock)
|
rdr := bufio.NewScanner(c.Sock)
|
||||||
|
|
||||||
c.joined = false
|
c.joined = false
|
||||||
|
Loading…
x
Reference in New Issue
Block a user