Invitations, closing before configure, etc
This commit is contained in:
parent
ec67a610e3
commit
b7f0776784
3 changed files with 46 additions and 5 deletions
|
@ -48,6 +48,9 @@ type Connector interface {
|
|||
// If no error happens, it must fire a Handler.Joined event
|
||||
Join(roomId RoomID) error
|
||||
|
||||
// Try to invite someone to a channel
|
||||
Invite(user UserID, roomId RoomID) error
|
||||
|
||||
// Leave a channel
|
||||
Leave(roomId RoomID)
|
||||
|
||||
|
|
|
@ -36,6 +36,10 @@ func(irc *IRC) Protocol() string {
|
|||
}
|
||||
|
||||
func (irc *IRC) Configure(c Configuration) error {
|
||||
if irc.conn != nil {
|
||||
irc.Close()
|
||||
}
|
||||
|
||||
irc.config = c
|
||||
|
||||
irc.nick = c.GetString("nick")
|
||||
|
@ -54,7 +58,7 @@ func (irc *IRC) Configure(c Configuration) error {
|
|||
Port: port,
|
||||
Nick: irc.nick,
|
||||
User: irc.nick,
|
||||
Debug: os.Stderr,
|
||||
Out: os.Stderr,
|
||||
SSL: true,
|
||||
})
|
||||
|
||||
|
@ -132,6 +136,21 @@ func (irc *IRC) Join(roomId RoomID) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
func (irc *IRC) Invite(userId UserID, roomId RoomID) error {
|
||||
ch, err := irc.checkRoomId(roomId)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
who, err := irc.checkUserId(userId)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
irc.conn.Cmd.Invite(ch, who)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (irc *IRC) Leave(roomId RoomID) {
|
||||
ch, err := irc.checkRoomId(roomId)
|
||||
if err != nil {
|
||||
|
@ -247,9 +266,28 @@ func (irc *IRC) ircPart(c *girc.Client, e girc.Event) {
|
|||
}
|
||||
|
||||
func (irc *IRC) ircNamreply(c *girc.Client, e girc.Event) {
|
||||
fmt.Printf("TODO namreply params: %#v", e.Params)
|
||||
room := RoomID(e.Params[2] + "@" + irc.server)
|
||||
names := strings.Split(e.Last(), " ")
|
||||
for _, name := range names {
|
||||
if name[0] == '@' {
|
||||
name = name[1:]
|
||||
}
|
||||
src := girc.ParseSource(name)
|
||||
if src.Name != irc.nick {
|
||||
irc.handler.Event(&Event{
|
||||
Type: EVENT_JOIN,
|
||||
Author: UserID(src.Name + "@" + irc.server),
|
||||
Room: room,
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (irc *IRC) ircTopic(c *girc.Client, e girc.Event) {
|
||||
fmt.Printf("TODO topic params: %#v", e.Params)
|
||||
room := RoomID(e.Params[1] + "@" + irc.server)
|
||||
topic := e.Last()
|
||||
irc.handler.RoomInfoUpdated(room, &RoomInfo{
|
||||
Name: string(room),
|
||||
Description: topic,
|
||||
})
|
||||
}
|
||||
|
|
4
main.go
4
main.go
|
@ -86,8 +86,8 @@ func main() {
|
|||
log.Fatalf("Send: %s", err)
|
||||
}
|
||||
|
||||
fmt.Printf("waiting exit signal")
|
||||
fmt.Printf("waiting exit signal\n")
|
||||
<-h.exit
|
||||
fmt.Printf("got exit signal")
|
||||
fmt.Printf("got exit signal\n")
|
||||
irc.Close()
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue