]> git.0d.be Git - barnard.git/blob - client.go
3d73979ace6da75a4a0c91cb989f675559fdbea6
[barnard.git] / client.go
1 package barnard
2
3 import (
4         "fmt"
5
6         "github.com/layeh/gumble/gumble"
7 )
8
9 func (b *Barnard) OnConnect(e *gumble.ConnectEvent) {
10         b.Ui.SetActive(uiViewInput)
11         b.UiTree.Rebuild()
12         b.Ui.Refresh()
13
14         b.UpdateInputStatus(fmt.Sprintf("To: %s", e.Client.Self.Channel.Name))
15         b.AddOutputLine(fmt.Sprintf("Connected to %s", b.Client.Conn.RemoteAddr()))
16         if e.WelcomeMessage != "" {
17                 b.AddOutputLine(fmt.Sprintf("Welcome message: %s", esc(e.WelcomeMessage)))
18         }
19 }
20
21 func (b *Barnard) OnDisconnect(e *gumble.DisconnectEvent) {
22         var reason string
23         switch e.Type {
24         case gumble.DisconnectError:
25                 reason = "connection error"
26         case gumble.DisconnectOther:
27                 reason = e.String
28         case gumble.DisconnectVersion:
29                 reason = "invalid version number"
30         case gumble.DisconnectUserName:
31                 reason = "invalid user name"
32         case gumble.DisconnectUserCredentials:
33                 reason = "incorrect user password/certificate"
34         case gumble.DisconnectServerPassword:
35                 reason = "incorrect server password"
36         case gumble.DisconnectUsernameInUse:
37                 reason = "user name in use"
38         case gumble.DisconnectServerFull:
39                 reason = "server full"
40         case gumble.DisconnectNoCertificate:
41                 reason = "missing certificate"
42         case gumble.DisconnectAuthenticatorFail:
43                 reason = "authenticator verification failed"
44         }
45         if reason == "" {
46                 b.AddOutputLine("Disconnected")
47         } else {
48                 b.AddOutputLine("Disconnected: " + reason)
49         }
50         b.UiTree.Rebuild()
51         b.Ui.Refresh()
52 }
53
54 func (b *Barnard) OnTextMessage(e *gumble.TextMessageEvent) {
55         b.AddOutputMessage(e.Sender, e.Message)
56 }
57
58 func (b *Barnard) OnUserChange(e *gumble.UserChangeEvent) {
59         if e.Type.Has(gumble.UserChangeChannel) && e.User == b.Client.Self {
60                 b.UpdateInputStatus(fmt.Sprintf("To: %s", e.User.Channel.Name))
61         }
62         b.UiTree.Rebuild()
63         b.Ui.Refresh()
64 }
65
66 func (b *Barnard) OnChannelChange(e *gumble.ChannelChangeEvent) {
67         b.UiTree.Rebuild()
68         b.Ui.Refresh()
69 }
70
71 func (b *Barnard) OnPermissionDenied(e *gumble.PermissionDeniedEvent) {
72         var info string
73         switch e.Type {
74         case gumble.PermissionDeniedOther:
75                 info = e.String
76         case gumble.PermissionDeniedPermission:
77                 info = "insufficient permissions"
78         case gumble.PermissionDeniedSuperUser:
79                 info = "cannot modify SuperUser"
80         case gumble.PermissionDeniedInvalidChannelName:
81                 info = "invalid channel name"
82         case gumble.PermissionDeniedTextTooLong:
83                 info = "text too long"
84         case gumble.PermissionDeniedTemporaryChannel:
85                 info = "temporary channel"
86         case gumble.PermissionDeniedMissingCertificate:
87                 info = "missing certificate"
88         case gumble.PermissionDeniedInvalidUserName:
89                 info = "invalid user name"
90         case gumble.PermissionDeniedChannelFull:
91                 info = "channel full"
92         case gumble.PermissionDeniedNestingLimit:
93                 info = "nesting limit"
94         }
95         b.AddOutputLine(fmt.Sprintf("Permission denied: %s", info))
96 }
97
98 func (b *Barnard) OnUserList(e *gumble.UserListEvent) {
99 }
100
101 func (b *Barnard) OnACL(e *gumble.ACLEvent) {
102 }
103
104 func (b *Barnard) OnBanList(e *gumble.BanListEvent) {
105 }
106
107 func (b *Barnard) OnContextActionChange(e *gumble.ContextActionChangeEvent) {
108 }