]> git.0d.be Git - barnard.git/blobdiff - client.go
remove UI stuff, turn into CLI
[barnard.git] / client.go
index 1d7066d9f29c5dc53b7e56f32490e4cae2aaff68..420aae2bd89decb1af48431efc141aa53e6fe276 100644 (file)
--- a/client.go
+++ b/client.go
@@ -1,21 +1,50 @@
-package barnard
+package main
 
 import (
        "fmt"
+       "net"
+       "os"
 
-       "github.com/layeh/gumble/gumble"
+       "layeh.com/gumble/gumble"
+       "layeh.com/gumble/gumbleopenal"
+       "layeh.com/gumble/gumbleutil"
 )
 
+func (b *Barnard) start() {
+       b.Config.Attach(gumbleutil.AutoBitrate)
+       b.Config.Attach(b)
+
+       var err error
+       _, err = gumble.DialWithDialer(new(net.Dialer), b.Address, b.Config, &b.TLSConfig)
+       if err != nil {
+               fmt.Fprintf(os.Stderr, "%s\n", err)
+               os.Exit(1)
+       }
+
+       // Audio
+       if os.Getenv("ALSOFT_LOGLEVEL") == "" {
+               os.Setenv("ALSOFT_LOGLEVEL", "0")
+       }
+       if stream, err := gumbleopenal.New(b.Client); err != nil {
+               fmt.Fprintf(os.Stderr, "%s\n", err)
+               os.Exit(1)
+       } else {
+               b.Stream = stream
+       }
+}
+
 func (b *Barnard) OnConnect(e *gumble.ConnectEvent) {
-       b.Ui.SetActive(uiViewInput)
-       b.UiTree.Rebuild()
-       b.Ui.Refresh()
+       b.Client = e.Client
 
-       b.UpdateInputStatus(fmt.Sprintf("To: %s", e.Client.Self().Channel().Name()))
-       b.AddOutputLine(fmt.Sprintf("Connected to %s", b.Client.Conn().RemoteAddr()))
-       if e.WelcomeMessage != "" {
-               b.AddOutputLine(fmt.Sprintf("Welcome message: %s", esc(e.WelcomeMessage)))
+       b.UpdateInputStatus(fmt.Sprintf("To: %s", e.Client.Self.Channel.Name))
+       b.AddOutputLine(fmt.Sprintf("Connected to %s", b.Client.Conn.RemoteAddr()))
+       if e.WelcomeMessage != nil {
+               b.AddOutputLine(fmt.Sprintf("Welcome message: %s", esc(*e.WelcomeMessage)))
+       }
+       if (b.DefaultChannel != "") {
+               b.Client.Self.Move(b.Client.Channels.Find(b.DefaultChannel))
        }
+
 }
 
 func (b *Barnard) OnDisconnect(e *gumble.DisconnectEvent) {
@@ -23,24 +52,6 @@ func (b *Barnard) OnDisconnect(e *gumble.DisconnectEvent) {
        switch e.Type {
        case gumble.DisconnectError:
                reason = "connection error"
-       case gumble.DisconnectOther:
-               reason = e.String
-       case gumble.DisconnectVersion:
-               reason = "invalid version number"
-       case gumble.DisconnectUserName:
-               reason = "invalid user name"
-       case gumble.DisconnectUserCredentials:
-               reason = "incorrect user password/certificate"
-       case gumble.DisconnectServerPassword:
-               reason = "incorrect server password"
-       case gumble.DisconnectUsernameInUse:
-               reason = "user name in use"
-       case gumble.DisconnectServerFull:
-               reason = "server full"
-       case gumble.DisconnectNoCertificate:
-               reason = "missing certificate"
-       case gumble.DisconnectAuthenticatorFail:
-               reason = "authenticator verification failed"
        }
        if reason == "" {
                b.AddOutputLine("Disconnected")
@@ -56,8 +67,8 @@ func (b *Barnard) OnTextMessage(e *gumble.TextMessageEvent) {
 }
 
 func (b *Barnard) OnUserChange(e *gumble.UserChangeEvent) {
-       if e.Type.Has(gumble.UserChangeChannel) && e.User == b.Client.Self() {
-               b.UpdateInputStatus(fmt.Sprintf("To: %s", e.User.Channel().Name()))
+       if e.Type.Has(gumble.UserChangeChannel) && e.User == b.Client.Self {
+               b.UpdateInputStatus(fmt.Sprintf("To: %s", e.User.Channel.Name))
        }
        b.UiTree.Rebuild()
        b.Ui.Refresh()
@@ -106,3 +117,6 @@ func (b *Barnard) OnBanList(e *gumble.BanListEvent) {
 
 func (b *Barnard) OnContextActionChange(e *gumble.ContextActionChangeEvent) {
 }
+
+func (b *Barnard) OnServerConfig(e *gumble.ServerConfigEvent) {
+}