mirror of
https://github.com/shazow/ssh-chat.git
synced 2025-07-01 19:24:34 +02:00
refactor: Id -> ID
This commit is contained in:
parent
0fcc076c74
commit
d950112dd9
@ -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)
|
||||||
}
|
}
|
||||||
|
@ -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()
|
||||||
}
|
}
|
||||||
|
@ -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 {
|
||||||
|
@ -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)))
|
||||||
|
@ -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"
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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()
|
||||||
|
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) {
|
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.
|
||||||
|
@ -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()
|
||||||
|
@ -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)
|
||||||
}
|
}
|
||||||
|
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?
|
// 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)
|
||||||
|
@ -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{}{}
|
||||||
|
@ -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 {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user