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