From 7f2b8e468990f9d90e23df160d0ab237d6ffae78 Mon Sep 17 00:00:00 2001 From: Andrey Petrov Date: Thu, 15 Sep 2016 15:00:50 -0400 Subject: [PATCH] refactor: Add message.Author.ID(), remove a bunch of type assertions --- chat/command.go | 10 +++++----- chat/member.go | 1 - chat/message/message.go | 1 + chat/message/screen.go | 4 ++-- chat/message/user.go | 14 +++++++------- chat/room.go | 6 +++--- host.go | 10 +++++----- 7 files changed, 23 insertions(+), 23 deletions(-) diff --git a/chat/command.go b/chat/command.go index 1b518ba..ee3b966 100644 --- a/chat/command.go +++ b/chat/command.go @@ -111,7 +111,7 @@ func InitCommands(c *Commands) { c.Add(Command{ Prefix: "/help", Handler: func(room *Room, msg message.CommandMsg) error { - op := room.IsOp(msg.From().(Member)) + op := room.IsOp(msg.From()) room.Send(message.NewSystemMsg(room.commands.Help(op), msg.From())) return nil }, @@ -150,7 +150,7 @@ func InitCommands(c *Commands) { if len(args) != 1 { return ErrMissingArg } - member, ok := room.MemberByID(msg.From().(Member).ID()) + member, ok := room.MemberByID(msg.From().ID()) if !ok { return ErrMissingMember } @@ -253,7 +253,7 @@ func InitCommands(c *Commands) { PrefixHelp: "[USER]", Help: "Hide messages from USER, /unignore USER to stop hiding.", Handler: func(room *Room, msg message.CommandMsg) error { - from, ok := room.Member(msg.From().(Member)) + from, ok := room.Member(msg.From()) if !ok { return ErrMissingMember } @@ -278,7 +278,7 @@ func InitCommands(c *Commands) { return nil } - if id == msg.From().(Member).ID() { + if id == msg.From().ID() { return errors.New("cannot ignore self") } target, ok := room.MemberByID(id) @@ -302,7 +302,7 @@ func InitCommands(c *Commands) { Prefix: "/unignore", PrefixHelp: "USER", Handler: func(room *Room, msg message.CommandMsg) error { - from, ok := room.Member(msg.From().(Member)) + from, ok := room.Member(msg.From()) if !ok { return ErrMissingMember } diff --git a/chat/member.go b/chat/member.go index 07839f7..1ce6ffe 100644 --- a/chat/member.go +++ b/chat/member.go @@ -16,7 +16,6 @@ type roomMember struct { type Member interface { message.Author - ID() string SetName(string) Config() message.UserConfig diff --git a/chat/message/message.go b/chat/message/message.go index 891e6ab..e7cac39 100644 --- a/chat/message/message.go +++ b/chat/message/message.go @@ -7,6 +7,7 @@ import ( ) type Author interface { + ID() string Name() string Color() int } diff --git a/chat/message/screen.go b/chat/message/screen.go index 4027f03..d073469 100644 --- a/chat/message/screen.go +++ b/chat/message/screen.go @@ -39,7 +39,7 @@ func HandledScreen(name string, handler func(Message) error) *handledScreen { func Screen(name string) *baseScreen { return &baseScreen{ - User: NewUser(name), + user: NewUser(name), } } @@ -71,7 +71,7 @@ func (u *pipedScreen) Send(m Message) error { // User container that knows about writing to an IO screen. type baseScreen struct { sync.Mutex - *User + *user } func (u *baseScreen) Config() UserConfig { diff --git a/chat/message/user.go b/chat/message/user.go index d16adff..30b2388 100644 --- a/chat/message/user.go +++ b/chat/message/user.go @@ -8,7 +8,7 @@ import ( const reHighlight = `\b(%s)\b` // User definition, implemented set Item interface and io.Writer -type User struct { +type user struct { joined time.Time name string @@ -16,8 +16,8 @@ type User struct { replyTo Author // Set when user gets a /msg, for replying. } -func NewUser(name string) *User { - u := User{ +func NewUser(name string) *user { + u := user{ name: name, config: DefaultUserConfig, joined: time.Now(), @@ -27,18 +27,18 @@ func NewUser(name string) *User { return &u } -func (u *User) Name() string { +func (u *user) Name() string { return u.name } -func (u *User) Color() int { +func (u *user) Color() int { return u.config.Seed } -func (u *User) ID() string { +func (u *user) ID() string { return SanitizeName(u.name) } -func (u *User) Joined() time.Time { +func (u *user) Joined() time.Time { return u.joined } diff --git a/chat/room.go b/chat/room.go index 975ff7f..1b920d6 100644 --- a/chat/room.go +++ b/chat/room.go @@ -92,7 +92,7 @@ func (r *Room) HandleMsg(m message.Message) { roomMember := item.Value().(*roomMember) user := roomMember.Member - if fromMsg != nil && fromMsg.From() != nil && roomMember.Ignored.In(fromMsg.From().(Member).ID()) { + if fromMsg != nil && fromMsg.From() != nil && roomMember.Ignored.In(fromMsg.From().ID()) { // Skip because ignored return } @@ -182,7 +182,7 @@ func (r *Room) Rename(oldID string, u Member) error { // Member returns a corresponding Member object to a User if the Member is // present in this room. -func (r *Room) Member(u Member) (*roomMember, bool) { +func (r *Room) Member(u message.Author) (*roomMember, bool) { m, ok := r.MemberByID(u.ID()) if !ok { return nil, false @@ -204,7 +204,7 @@ func (r *Room) MemberByID(id string) (*roomMember, bool) { } // IsOp returns whether a user is an operator in this room. -func (r *Room) IsOp(u Member) bool { +func (r *Room) IsOp(u message.Author) bool { return r.Ops.In(u.ID()) } diff --git a/host.go b/host.go index 8cf9b03..bb35505 100644 --- a/host.go +++ b/host.go @@ -353,7 +353,7 @@ func (h *Host) InitCommands(c *chat.Commands) { } var whois string - switch room.IsOp(msg.From().(chat.Member)) { + switch room.IsOp(msg.From()) { case true: whois = whoisAdmin(target) case false: @@ -389,7 +389,7 @@ func (h *Host) InitCommands(c *chat.Commands) { PrefixHelp: "USER [DURATION]", Help: "Set USER as admin.", Handler: func(room *chat.Room, msg message.CommandMsg) error { - if !room.IsOp(msg.From().(chat.Member)) { + if !room.IsOp(msg.From()) { return errors.New("must be op") } @@ -435,7 +435,7 @@ func (h *Host) InitCommands(c *chat.Commands) { Help: "Ban USER from the server.", Handler: func(room *chat.Room, msg message.CommandMsg) error { // TODO: Would be nice to specify what to ban. Key? Ip? etc. - if !room.IsOp(msg.From().(chat.Member)) { + if !room.IsOp(msg.From()) { return errors.New("must be op") } @@ -475,7 +475,7 @@ func (h *Host) InitCommands(c *chat.Commands) { PrefixHelp: "USER", Help: "Kick USER from the server.", Handler: func(room *chat.Room, msg message.CommandMsg) error { - if !room.IsOp(msg.From().(chat.Member)) { + if !room.IsOp(msg.From()) { return errors.New("must be op") } @@ -513,7 +513,7 @@ func (h *Host) InitCommands(c *chat.Commands) { room.Send(message.NewSystemMsg(motd, user)) return nil } - if !room.IsOp(user.(chat.Member)) { + if !room.IsOp(user) { return errors.New("must be OP to modify the MOTD") }