refactor: Id -> ID

This commit is contained in:
Andrey Petrov 2016-08-24 13:47:22 -04:00
parent 0fcc076c74
commit d950112dd9
13 changed files with 64 additions and 64 deletions

View File

@ -148,16 +148,16 @@ func InitCommands(c *Commands) {
} }
u := msg.From() u := msg.From()
member, ok := room.MemberById(u.Id()) member, ok := room.MemberByID(u.ID())
if !ok { if !ok {
return errors.New("failed to find member") return errors.New("failed to find member")
} }
oldId := member.Id() oldID := member.ID()
member.SetId(SanitizeName(args[0])) member.SetID(SanitizeName(args[0]))
err := room.Rename(oldId, member) err := room.Rename(oldID, member)
if err != nil { if err != nil {
member.SetId(oldId) member.SetID(oldID)
return err return err
} }
return nil return nil
@ -187,7 +187,7 @@ func InitCommands(c *Commands) {
if len(args) == 0 { if len(args) == 0 {
theme := "plain" theme := "plain"
if user.Config.Theme != nil { if user.Config.Theme != nil {
theme = user.Config.Theme.Id() theme = user.Config.Theme.ID()
} }
body := fmt.Sprintf("Current theme: %s", theme) body := fmt.Sprintf("Current theme: %s", theme)
room.Send(message.NewSystemMsg(body, user)) room.Send(message.NewSystemMsg(body, user))
@ -196,7 +196,7 @@ func InitCommands(c *Commands) {
id := args[0] id := args[0]
for _, t := range message.Themes { for _, t := range message.Themes {
if t.Id() == id { if t.ID() == id {
user.Config.Theme = &t user.Config.Theme = &t
body := fmt.Sprintf("Set theme: %s", id) body := fmt.Sprintf("Set theme: %s", id)
room.Send(message.NewSystemMsg(body, user)) room.Send(message.NewSystemMsg(body, user))
@ -266,7 +266,7 @@ func InitCommands(c *Commands) {
return nil return nil
} }
target, ok := room.MemberById(id) target, ok := room.MemberByID(id)
if !ok { if !ok {
return fmt.Errorf("user %s not found.", id) return fmt.Errorf("user %s not found.", id)
} }

View File

@ -2,25 +2,25 @@ package message
// Identifier is an interface that can uniquely identify itself. // Identifier is an interface that can uniquely identify itself.
type Identifier interface { type Identifier interface {
Id() string ID() string
SetId(string) SetID(string)
Name() string Name() string
} }
// SimpleId is a simple Identifier implementation used for testing. // SimpleID is a simple Identifier implementation used for testing.
type SimpleId string type SimpleID string
// Id returns the Id as a string. // ID returns the ID as a string.
func (i SimpleId) Id() string { func (i SimpleID) ID() string {
return string(i) return string(i)
} }
// SetId is a no-op // SetID is a no-op
func (i SimpleId) SetId(s string) { func (i SimpleID) SetID(s string) {
// no-op // no-op
} }
// Name returns the Id // Name returns the ID
func (i SimpleId) Name() string { func (i SimpleID) Name() string {
return i.Id() return i.ID()
} }

View File

@ -11,7 +11,7 @@ func TestMessage(t *testing.T) {
t.Errorf("Got: `%s`; Expected: `%s`", actual, expected) t.Errorf("Got: `%s`; Expected: `%s`", actual, expected)
} }
u := NewUser(SimpleId("foo")) u := NewUser(SimpleID("foo"))
expected = "foo: hello" expected = "foo: hello"
actual = NewPublicMsg("hello", u).String() actual = NewPublicMsg("hello", u).String()
if actual != expected { if actual != expected {

View File

@ -122,7 +122,7 @@ type Theme struct {
names *Palette names *Palette
} }
func (t Theme) Id() string { func (t Theme) ID() string {
return t.id return t.id
} }
@ -233,7 +233,7 @@ func init() {
} }
func printTheme(t Theme) { func printTheme(t Theme) {
fmt.Println("Printing theme:", t.Id()) fmt.Println("Printing theme:", t.ID())
if t.names != nil { if t.names != nil {
for i, color := range t.names.colors { for i, color := range t.names.colors {
fmt.Printf("%s ", color.Format(fmt.Sprintf("name%d", i))) fmt.Printf("%s ", color.Format(fmt.Sprintf("name%d", i)))

View File

@ -51,7 +51,7 @@ func TestTheme(t *testing.T) {
t.Errorf("Got: %q; Expected: %q", actual, expected) t.Errorf("Got: %q; Expected: %q", actual, expected)
} }
u := NewUser(SimpleId("foo")) u := NewUser(SimpleID("foo"))
u.colorIdx = 4 u.colorIdx = 4
actual = colorTheme.ColorName(u) actual = colorTheme.ColorName(u)
expected = "\033[38;05;5mfoo\033[0m" expected = "\033[38;05;5mfoo\033[0m"

View File

@ -57,8 +57,8 @@ func NewUserScreen(identity Identifier, screen io.WriteCloser) *User {
} }
// Rename the user with a new Identifier. // Rename the user with a new Identifier.
func (u *User) SetId(id string) { func (u *User) SetID(id string) {
u.Identifier.SetId(id) u.Identifier.SetID(id)
u.SetColorIdx(rand.Int()) u.SetColorIdx(rand.Int())
} }
@ -194,15 +194,15 @@ func (u *User) Ignore(other Identifier) error {
return errors.New("user is nil.") return errors.New("user is nil.")
} }
if other.Id() == u.Id() { if other.ID() == u.ID() {
return errors.New("cannot ignore self.") return errors.New("cannot ignore self.")
} }
if u.Ignored.In(other.Id()) { if u.Ignored.In(other.ID()) {
return errors.New("user already ignored.") return errors.New("user already ignored.")
} }
u.Ignored.Add(set.Itemize(other.Id(), other)) u.Ignored.Add(set.Itemize(other.ID(), other))
return nil return nil
} }

View File

@ -9,7 +9,7 @@ func TestMakeUser(t *testing.T) {
var actual, expected []byte var actual, expected []byte
s := &MockScreen{} s := &MockScreen{}
u := NewUserScreen(SimpleId("foo"), s) u := NewUserScreen(SimpleID("foo"), s)
m := NewAnnounceMsg("hello") m := NewAnnounceMsg("hello")
defer u.Close() defer u.Close()

View File

@ -100,7 +100,7 @@ func (r *Room) HandleMsg(m message.Message) {
r.Members.Each(func(_ string, item set.Item) (err error) { r.Members.Each(func(_ string, item set.Item) (err error) {
user := item.Value().(*Member).User user := item.Value().(*Member).User
if fromMsg != nil && user.Ignored.In(fromMsg.From().Id()) { if fromMsg != nil && user.Ignored.In(fromMsg.From().ID()) {
// Skip because ignored // Skip because ignored
return return
} }
@ -144,11 +144,11 @@ func (r *Room) History(u *message.User) {
// Join the room as a user, will announce. // Join the room as a user, will announce.
func (r *Room) Join(u *message.User) (*Member, error) { func (r *Room) Join(u *message.User) (*Member, error) {
// TODO: Check if closed // TODO: Check if closed
if u.Id() == "" { if u.ID() == "" {
return nil, ErrInvalidName return nil, ErrInvalidName
} }
member := &Member{u} member := &Member{u}
err := r.Members.Add(set.Itemize(u.Id(), member)) err := r.Members.Add(set.Itemize(u.ID(), member))
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -160,27 +160,27 @@ func (r *Room) Join(u *message.User) (*Member, error) {
// Leave the room as a user, will announce. Mostly used during setup. // Leave the room as a user, will announce. Mostly used during setup.
func (r *Room) Leave(u message.Identifier) error { func (r *Room) Leave(u message.Identifier) error {
err := r.Members.Remove(u.Id()) err := r.Members.Remove(u.ID())
if err != nil { if err != nil {
return err return err
} }
r.Ops.Remove(u.Id()) r.Ops.Remove(u.ID())
s := fmt.Sprintf("%s left.", u.Name()) s := fmt.Sprintf("%s left.", u.Name())
r.Send(message.NewAnnounceMsg(s)) r.Send(message.NewAnnounceMsg(s))
return nil return nil
} }
// Rename member with a new identity. This will not call rename on the member. // Rename member with a new identity. This will not call rename on the member.
func (r *Room) Rename(oldId string, u message.Identifier) error { func (r *Room) Rename(oldID string, u message.Identifier) error {
if u.Id() == "" { if u.ID() == "" {
return ErrInvalidName return ErrInvalidName
} }
err := r.Members.Replace(oldId, set.Itemize(u.Id(), u)) err := r.Members.Replace(oldID, set.Itemize(u.ID(), u))
if err != nil { if err != nil {
return err return err
} }
s := fmt.Sprintf("%s is now known as %s.", oldId, u.Id()) s := fmt.Sprintf("%s is now known as %s.", oldID, u.ID())
r.Send(message.NewAnnounceMsg(s)) r.Send(message.NewAnnounceMsg(s))
return nil return nil
} }
@ -188,7 +188,7 @@ func (r *Room) Rename(oldId string, u message.Identifier) error {
// Member returns a corresponding Member object to a User if the Member is // Member returns a corresponding Member object to a User if the Member is
// present in this room. // present in this room.
func (r *Room) Member(u *message.User) (*Member, bool) { func (r *Room) Member(u *message.User) (*Member, bool) {
m, ok := r.MemberById(u.Id()) m, ok := r.MemberByID(u.ID())
if !ok { if !ok {
return nil, false return nil, false
} }
@ -199,7 +199,7 @@ func (r *Room) Member(u *message.User) (*Member, bool) {
return m, true return m, true
} }
func (r *Room) MemberById(id string) (*Member, bool) { func (r *Room) MemberByID(id string) (*Member, bool) {
m, err := r.Members.Get(id) m, err := r.Members.Get(id)
if err != nil { if err != nil {
return nil, false return nil, false
@ -209,7 +209,7 @@ func (r *Room) MemberById(id string) (*Member, bool) {
// IsOp returns whether a user is an operator in this room. // IsOp returns whether a user is an operator in this room.
func (r *Room) IsOp(u *message.User) bool { func (r *Room) IsOp(u *message.User) bool {
return r.Ops.In(u.Id()) return r.Ops.In(u.ID())
} }
// Topic of the room. // Topic of the room.

View File

@ -59,7 +59,7 @@ func TestIgnore(t *testing.T) {
users := make([]ScreenedUser, 3) users := make([]ScreenedUser, 3)
for i := 0; i < 3; i++ { for i := 0; i < 3; i++ {
screen := &MockScreen{} screen := &MockScreen{}
user := message.NewUserScreen(message.SimpleId(fmt.Sprintf("user%d", i)), screen) user := message.NewUserScreen(message.SimpleID(fmt.Sprintf("user%d", i)), screen)
users[i] = ScreenedUser{ users[i] = ScreenedUser{
user: user, user: user,
screen: screen, screen: screen,
@ -176,7 +176,7 @@ func TestRoomJoin(t *testing.T) {
var expected, actual []byte var expected, actual []byte
s := &MockScreen{} s := &MockScreen{}
u := message.NewUserScreen(message.SimpleId("foo"), s) u := message.NewUserScreen(message.SimpleID("foo"), s)
ch := NewRoom() ch := NewRoom()
go ch.Serve() go ch.Serve()
@ -212,7 +212,7 @@ func TestRoomJoin(t *testing.T) {
} }
func TestRoomDoesntBroadcastAnnounceMessagesWhenQuiet(t *testing.T) { func TestRoomDoesntBroadcastAnnounceMessagesWhenQuiet(t *testing.T) {
u := message.NewUser(message.SimpleId("foo")) u := message.NewUser(message.SimpleID("foo"))
u.Config = message.UserConfig{ u.Config = message.UserConfig{
Quiet: true, Quiet: true,
} }
@ -251,7 +251,7 @@ func TestRoomDoesntBroadcastAnnounceMessagesWhenQuiet(t *testing.T) {
} }
func TestRoomQuietToggleBroadcasts(t *testing.T) { func TestRoomQuietToggleBroadcasts(t *testing.T) {
u := message.NewUser(message.SimpleId("foo")) u := message.NewUser(message.SimpleID("foo"))
u.Config = message.UserConfig{ u.Config = message.UserConfig{
Quiet: true, Quiet: true,
} }
@ -290,7 +290,7 @@ func TestQuietToggleDisplayState(t *testing.T) {
var expected, actual []byte var expected, actual []byte
s := &MockScreen{} s := &MockScreen{}
u := message.NewUserScreen(message.SimpleId("foo"), s) u := message.NewUserScreen(message.SimpleID("foo"), s)
ch := NewRoom() ch := NewRoom()
go ch.Serve() go ch.Serve()
@ -331,7 +331,7 @@ func TestRoomNames(t *testing.T) {
var expected, actual []byte var expected, actual []byte
s := &MockScreen{} s := &MockScreen{}
u := message.NewUserScreen(message.SimpleId("foo"), s) u := message.NewUserScreen(message.SimpleID("foo"), s)
ch := NewRoom() ch := NewRoom()
go ch.Serve() go ch.Serve()

View File

@ -10,28 +10,28 @@ import (
func TestSet(t *testing.T) { func TestSet(t *testing.T) {
var err error var err error
s := set.New() s := set.New()
u := message.NewUser(message.SimpleId("foo")) u := message.NewUser(message.SimpleID("foo"))
if s.In(u.Id()) { if s.In(u.ID()) {
t.Errorf("Set should be empty.") t.Errorf("Set should be empty.")
} }
err = s.Add(set.Itemize(u.Id(), u)) err = s.Add(set.Itemize(u.ID(), u))
if err != nil { if err != nil {
t.Error(err) t.Error(err)
} }
if !s.In(u.Id()) { if !s.In(u.ID()) {
t.Errorf("Set should contain user.") t.Errorf("Set should contain user.")
} }
u2 := message.NewUser(message.SimpleId("bar")) u2 := message.NewUser(message.SimpleID("bar"))
err = s.Add(set.Itemize(u2.Id(), u2)) err = s.Add(set.Itemize(u2.ID(), u2))
if err != nil { if err != nil {
t.Error(err) t.Error(err)
} }
err = s.Add(set.Itemize(u2.Id(), u2)) err = s.Add(set.Itemize(u2.ID(), u2))
if err != set.ErrCollision { if err != set.ErrCollision {
t.Error(err) t.Error(err)
} }

View File

@ -127,7 +127,7 @@ func (h *Host) Connect(term *sshd.Terminal) {
// Should the user be op'd on join? // Should the user be op'd on join?
if h.isOp(term.Conn) { if h.isOp(term.Conn) {
h.Room.Ops.Add(set.Itemize(member.Id(), member)) h.Room.Ops.Add(set.Itemize(member.ID(), member))
} }
ratelimit := rateio.NewSimpleLimiter(3, time.Second*3) ratelimit := rateio.NewSimpleLimiter(3, time.Second*3)
@ -260,7 +260,7 @@ func (h *Host) AutoCompleteFunction(u *message.User) func(line string, pos int,
// GetUser returns a message.User based on a name. // GetUser returns a message.User based on a name.
func (h *Host) GetUser(name string) (*message.User, bool) { func (h *Host) GetUser(name string) (*message.User, bool) {
m, ok := h.MemberById(name) m, ok := h.MemberByID(name)
if !ok { if !ok {
return nil, false return nil, false
} }
@ -490,11 +490,11 @@ func (h *Host) InitCommands(c *chat.Commands) {
until, _ = time.ParseDuration(args[1]) until, _ = time.ParseDuration(args[1])
} }
member, ok := room.MemberById(args[0]) member, ok := room.MemberByID(args[0])
if !ok { if !ok {
return errors.New("user not found") return errors.New("user not found")
} }
room.Ops.Add(set.Itemize(member.Id(), member)) room.Ops.Add(set.Itemize(member.ID(), member))
id := member.Identifier.(*Identity) id := member.Identifier.(*Identity)
h.auth.Op(id.PublicKey(), until) h.auth.Op(id.PublicKey(), until)

View File

@ -190,11 +190,11 @@ func TestHostKick(t *testing.T) {
// First client // First client
err := sshd.ConnectShell(addr, "foo", func(r io.Reader, w io.WriteCloser) error { err := sshd.ConnectShell(addr, "foo", func(r io.Reader, w io.WriteCloser) error {
// Make op // Make op
member, _ := host.Room.MemberById("foo") member, _ := host.Room.MemberByID("foo")
if member == nil { if member == nil {
return errors.New("failed to load MemberById") return errors.New("failed to load MemberByID")
} }
host.Room.Ops.Add(set.Itemize(member.Id(), member)) host.Room.Ops.Add(set.Itemize(member.ID(), member))
// Block until second client is here // Block until second client is here
connected <- struct{}{} connected <- struct{}{}

View File

@ -26,16 +26,16 @@ func NewIdentity(conn sshd.Connection) *Identity {
} }
} }
func (i Identity) Id() string { func (i Identity) ID() string {
return i.id return i.id
} }
func (i *Identity) SetId(id string) { func (i *Identity) SetID(id string) {
i.id = id i.id = id
} }
func (i *Identity) SetName(name string) { func (i *Identity) SetName(name string) {
i.SetId(name) i.SetID(name)
} }
func (i Identity) Name() string { func (i Identity) Name() string {