mirror of
https://github.com/shazow/ssh-chat.git
synced 2025-04-12 07:10:05 +03:00
refactor: Id -> ID
This commit is contained in:
parent
0fcc076c74
commit
d950112dd9
@ -148,16 +148,16 @@ func InitCommands(c *Commands) {
|
||||
}
|
||||
u := msg.From()
|
||||
|
||||
member, ok := room.MemberById(u.Id())
|
||||
member, ok := room.MemberByID(u.ID())
|
||||
if !ok {
|
||||
return errors.New("failed to find member")
|
||||
}
|
||||
|
||||
oldId := member.Id()
|
||||
member.SetId(SanitizeName(args[0]))
|
||||
err := room.Rename(oldId, member)
|
||||
oldID := member.ID()
|
||||
member.SetID(SanitizeName(args[0]))
|
||||
err := room.Rename(oldID, member)
|
||||
if err != nil {
|
||||
member.SetId(oldId)
|
||||
member.SetID(oldID)
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
@ -187,7 +187,7 @@ func InitCommands(c *Commands) {
|
||||
if len(args) == 0 {
|
||||
theme := "plain"
|
||||
if user.Config.Theme != nil {
|
||||
theme = user.Config.Theme.Id()
|
||||
theme = user.Config.Theme.ID()
|
||||
}
|
||||
body := fmt.Sprintf("Current theme: %s", theme)
|
||||
room.Send(message.NewSystemMsg(body, user))
|
||||
@ -196,7 +196,7 @@ func InitCommands(c *Commands) {
|
||||
|
||||
id := args[0]
|
||||
for _, t := range message.Themes {
|
||||
if t.Id() == id {
|
||||
if t.ID() == id {
|
||||
user.Config.Theme = &t
|
||||
body := fmt.Sprintf("Set theme: %s", id)
|
||||
room.Send(message.NewSystemMsg(body, user))
|
||||
@ -266,7 +266,7 @@ func InitCommands(c *Commands) {
|
||||
return nil
|
||||
}
|
||||
|
||||
target, ok := room.MemberById(id)
|
||||
target, ok := room.MemberByID(id)
|
||||
if !ok {
|
||||
return fmt.Errorf("user %s not found.", id)
|
||||
}
|
||||
|
@ -2,25 +2,25 @@ package message
|
||||
|
||||
// Identifier is an interface that can uniquely identify itself.
|
||||
type Identifier interface {
|
||||
Id() string
|
||||
SetId(string)
|
||||
ID() string
|
||||
SetID(string)
|
||||
Name() string
|
||||
}
|
||||
|
||||
// SimpleId is a simple Identifier implementation used for testing.
|
||||
type SimpleId string
|
||||
// SimpleID is a simple Identifier implementation used for testing.
|
||||
type SimpleID string
|
||||
|
||||
// Id returns the Id as a string.
|
||||
func (i SimpleId) Id() string {
|
||||
// ID returns the ID as a string.
|
||||
func (i SimpleID) ID() string {
|
||||
return string(i)
|
||||
}
|
||||
|
||||
// SetId is a no-op
|
||||
func (i SimpleId) SetId(s string) {
|
||||
// SetID is a no-op
|
||||
func (i SimpleID) SetID(s string) {
|
||||
// no-op
|
||||
}
|
||||
|
||||
// Name returns the Id
|
||||
func (i SimpleId) Name() string {
|
||||
return i.Id()
|
||||
// Name returns the ID
|
||||
func (i SimpleID) Name() string {
|
||||
return i.ID()
|
||||
}
|
||||
|
@ -11,7 +11,7 @@ func TestMessage(t *testing.T) {
|
||||
t.Errorf("Got: `%s`; Expected: `%s`", actual, expected)
|
||||
}
|
||||
|
||||
u := NewUser(SimpleId("foo"))
|
||||
u := NewUser(SimpleID("foo"))
|
||||
expected = "foo: hello"
|
||||
actual = NewPublicMsg("hello", u).String()
|
||||
if actual != expected {
|
||||
|
@ -122,7 +122,7 @@ type Theme struct {
|
||||
names *Palette
|
||||
}
|
||||
|
||||
func (t Theme) Id() string {
|
||||
func (t Theme) ID() string {
|
||||
return t.id
|
||||
}
|
||||
|
||||
@ -233,7 +233,7 @@ func init() {
|
||||
}
|
||||
|
||||
func printTheme(t Theme) {
|
||||
fmt.Println("Printing theme:", t.Id())
|
||||
fmt.Println("Printing theme:", t.ID())
|
||||
if t.names != nil {
|
||||
for i, color := range t.names.colors {
|
||||
fmt.Printf("%s ", color.Format(fmt.Sprintf("name%d", i)))
|
||||
|
@ -51,7 +51,7 @@ func TestTheme(t *testing.T) {
|
||||
t.Errorf("Got: %q; Expected: %q", actual, expected)
|
||||
}
|
||||
|
||||
u := NewUser(SimpleId("foo"))
|
||||
u := NewUser(SimpleID("foo"))
|
||||
u.colorIdx = 4
|
||||
actual = colorTheme.ColorName(u)
|
||||
expected = "\033[38;05;5mfoo\033[0m"
|
||||
|
@ -57,8 +57,8 @@ func NewUserScreen(identity Identifier, screen io.WriteCloser) *User {
|
||||
}
|
||||
|
||||
// Rename the user with a new Identifier.
|
||||
func (u *User) SetId(id string) {
|
||||
u.Identifier.SetId(id)
|
||||
func (u *User) SetID(id string) {
|
||||
u.Identifier.SetID(id)
|
||||
u.SetColorIdx(rand.Int())
|
||||
}
|
||||
|
||||
@ -194,15 +194,15 @@ func (u *User) Ignore(other Identifier) error {
|
||||
return errors.New("user is nil.")
|
||||
}
|
||||
|
||||
if other.Id() == u.Id() {
|
||||
if other.ID() == u.ID() {
|
||||
return errors.New("cannot ignore self.")
|
||||
}
|
||||
|
||||
if u.Ignored.In(other.Id()) {
|
||||
if u.Ignored.In(other.ID()) {
|
||||
return errors.New("user already ignored.")
|
||||
}
|
||||
|
||||
u.Ignored.Add(set.Itemize(other.Id(), other))
|
||||
u.Ignored.Add(set.Itemize(other.ID(), other))
|
||||
return nil
|
||||
}
|
||||
|
||||
|
@ -9,7 +9,7 @@ func TestMakeUser(t *testing.T) {
|
||||
var actual, expected []byte
|
||||
|
||||
s := &MockScreen{}
|
||||
u := NewUserScreen(SimpleId("foo"), s)
|
||||
u := NewUserScreen(SimpleID("foo"), s)
|
||||
m := NewAnnounceMsg("hello")
|
||||
|
||||
defer u.Close()
|
||||
|
24
chat/room.go
24
chat/room.go
@ -100,7 +100,7 @@ func (r *Room) HandleMsg(m message.Message) {
|
||||
r.Members.Each(func(_ string, item set.Item) (err error) {
|
||||
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
|
||||
return
|
||||
}
|
||||
@ -144,11 +144,11 @@ func (r *Room) History(u *message.User) {
|
||||
// Join the room as a user, will announce.
|
||||
func (r *Room) Join(u *message.User) (*Member, error) {
|
||||
// TODO: Check if closed
|
||||
if u.Id() == "" {
|
||||
if u.ID() == "" {
|
||||
return nil, ErrInvalidName
|
||||
}
|
||||
member := &Member{u}
|
||||
err := r.Members.Add(set.Itemize(u.Id(), member))
|
||||
err := r.Members.Add(set.Itemize(u.ID(), member))
|
||||
if err != nil {
|
||||
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.
|
||||
func (r *Room) Leave(u message.Identifier) error {
|
||||
err := r.Members.Remove(u.Id())
|
||||
err := r.Members.Remove(u.ID())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
r.Ops.Remove(u.Id())
|
||||
r.Ops.Remove(u.ID())
|
||||
s := fmt.Sprintf("%s left.", u.Name())
|
||||
r.Send(message.NewAnnounceMsg(s))
|
||||
return nil
|
||||
}
|
||||
|
||||
// Rename member with a new identity. This will not call rename on the member.
|
||||
func (r *Room) Rename(oldId string, u message.Identifier) error {
|
||||
if u.Id() == "" {
|
||||
func (r *Room) Rename(oldID string, u message.Identifier) error {
|
||||
if u.ID() == "" {
|
||||
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 {
|
||||
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))
|
||||
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
|
||||
// present in this room.
|
||||
func (r *Room) Member(u *message.User) (*Member, bool) {
|
||||
m, ok := r.MemberById(u.Id())
|
||||
m, ok := r.MemberByID(u.ID())
|
||||
if !ok {
|
||||
return nil, false
|
||||
}
|
||||
@ -199,7 +199,7 @@ func (r *Room) Member(u *message.User) (*Member, bool) {
|
||||
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)
|
||||
if err != nil {
|
||||
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.
|
||||
func (r *Room) IsOp(u *message.User) bool {
|
||||
return r.Ops.In(u.Id())
|
||||
return r.Ops.In(u.ID())
|
||||
}
|
||||
|
||||
// Topic of the room.
|
||||
|
@ -59,7 +59,7 @@ func TestIgnore(t *testing.T) {
|
||||
users := make([]ScreenedUser, 3)
|
||||
for i := 0; i < 3; i++ {
|
||||
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{
|
||||
user: user,
|
||||
screen: screen,
|
||||
@ -176,7 +176,7 @@ func TestRoomJoin(t *testing.T) {
|
||||
var expected, actual []byte
|
||||
|
||||
s := &MockScreen{}
|
||||
u := message.NewUserScreen(message.SimpleId("foo"), s)
|
||||
u := message.NewUserScreen(message.SimpleID("foo"), s)
|
||||
|
||||
ch := NewRoom()
|
||||
go ch.Serve()
|
||||
@ -212,7 +212,7 @@ func TestRoomJoin(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestRoomDoesntBroadcastAnnounceMessagesWhenQuiet(t *testing.T) {
|
||||
u := message.NewUser(message.SimpleId("foo"))
|
||||
u := message.NewUser(message.SimpleID("foo"))
|
||||
u.Config = message.UserConfig{
|
||||
Quiet: true,
|
||||
}
|
||||
@ -251,7 +251,7 @@ func TestRoomDoesntBroadcastAnnounceMessagesWhenQuiet(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestRoomQuietToggleBroadcasts(t *testing.T) {
|
||||
u := message.NewUser(message.SimpleId("foo"))
|
||||
u := message.NewUser(message.SimpleID("foo"))
|
||||
u.Config = message.UserConfig{
|
||||
Quiet: true,
|
||||
}
|
||||
@ -290,7 +290,7 @@ func TestQuietToggleDisplayState(t *testing.T) {
|
||||
var expected, actual []byte
|
||||
|
||||
s := &MockScreen{}
|
||||
u := message.NewUserScreen(message.SimpleId("foo"), s)
|
||||
u := message.NewUserScreen(message.SimpleID("foo"), s)
|
||||
|
||||
ch := NewRoom()
|
||||
go ch.Serve()
|
||||
@ -331,7 +331,7 @@ func TestRoomNames(t *testing.T) {
|
||||
var expected, actual []byte
|
||||
|
||||
s := &MockScreen{}
|
||||
u := message.NewUserScreen(message.SimpleId("foo"), s)
|
||||
u := message.NewUserScreen(message.SimpleID("foo"), s)
|
||||
|
||||
ch := NewRoom()
|
||||
go ch.Serve()
|
||||
|
@ -10,28 +10,28 @@ import (
|
||||
func TestSet(t *testing.T) {
|
||||
var err error
|
||||
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.")
|
||||
}
|
||||
|
||||
err = s.Add(set.Itemize(u.Id(), u))
|
||||
err = s.Add(set.Itemize(u.ID(), u))
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
if !s.In(u.Id()) {
|
||||
if !s.In(u.ID()) {
|
||||
t.Errorf("Set should contain user.")
|
||||
}
|
||||
|
||||
u2 := message.NewUser(message.SimpleId("bar"))
|
||||
err = s.Add(set.Itemize(u2.Id(), u2))
|
||||
u2 := message.NewUser(message.SimpleID("bar"))
|
||||
err = s.Add(set.Itemize(u2.ID(), u2))
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
err = s.Add(set.Itemize(u2.Id(), u2))
|
||||
err = s.Add(set.Itemize(u2.ID(), u2))
|
||||
if err != set.ErrCollision {
|
||||
t.Error(err)
|
||||
}
|
||||
|
8
host.go
8
host.go
@ -127,7 +127,7 @@ func (h *Host) Connect(term *sshd.Terminal) {
|
||||
|
||||
// Should the user be op'd on join?
|
||||
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)
|
||||
|
||||
@ -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.
|
||||
func (h *Host) GetUser(name string) (*message.User, bool) {
|
||||
m, ok := h.MemberById(name)
|
||||
m, ok := h.MemberByID(name)
|
||||
if !ok {
|
||||
return nil, false
|
||||
}
|
||||
@ -490,11 +490,11 @@ func (h *Host) InitCommands(c *chat.Commands) {
|
||||
until, _ = time.ParseDuration(args[1])
|
||||
}
|
||||
|
||||
member, ok := room.MemberById(args[0])
|
||||
member, ok := room.MemberByID(args[0])
|
||||
if !ok {
|
||||
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)
|
||||
h.auth.Op(id.PublicKey(), until)
|
||||
|
@ -190,11 +190,11 @@ func TestHostKick(t *testing.T) {
|
||||
// First client
|
||||
err := sshd.ConnectShell(addr, "foo", func(r io.Reader, w io.WriteCloser) error {
|
||||
// Make op
|
||||
member, _ := host.Room.MemberById("foo")
|
||||
member, _ := host.Room.MemberByID("foo")
|
||||
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
|
||||
connected <- struct{}{}
|
||||
|
@ -26,16 +26,16 @@ func NewIdentity(conn sshd.Connection) *Identity {
|
||||
}
|
||||
}
|
||||
|
||||
func (i Identity) Id() string {
|
||||
func (i Identity) ID() string {
|
||||
return i.id
|
||||
}
|
||||
|
||||
func (i *Identity) SetId(id string) {
|
||||
func (i *Identity) SetID(id string) {
|
||||
i.id = id
|
||||
}
|
||||
|
||||
func (i *Identity) SetName(name string) {
|
||||
i.SetId(name)
|
||||
i.SetID(name)
|
||||
}
|
||||
|
||||
func (i Identity) Name() string {
|
||||
|
Loading…
x
Reference in New Issue
Block a user