diff -r 34e917ca6a11 -r f464f14e39a7 examples/interact.go --- a/examples/interact.go Mon Sep 02 20:45:24 2013 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,114 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package main - -import ( - xmpp ".." - "crypto/tls" - "encoding/xml" - "flag" - "fmt" - "log" - "os" - "strings" -) - -type StdLogger struct { -} - -func (s *StdLogger) Log(v ...interface{}) { - log.Println(v...) -} - -func (s *StdLogger) Logf(fmt string, v ...interface{}) { - log.Printf(fmt, v...) -} - -func init() { - logger := &StdLogger{} - // xmpp.Debug = logger - xmpp.Info = logger - xmpp.Warn = logger - - xmpp.TlsConfig = tls.Config{InsecureSkipVerify: true} -} - -// Demonstrate the API, and allow the user to interact with an XMPP -// server via the terminal. -func main() { - var jid xmpp.JID - flag.Var(&jid, "jid", "JID to log in as") - var pw *string = flag.String("pw", "", "password") - flag.Parse() - if jid.Domain == "" || *pw == "" { - flag.Usage() - os.Exit(2) - } - - c, err := xmpp.NewClient(&jid, *pw, nil) - if err != nil { - log.Fatalf("NewClient(%v): %v", jid, err) - } - defer close(c.Out) - - err = c.StartSession(&xmpp.Presence{}) - if err != nil { - log.Fatalf("StartSession: %v", err) - } - c.Roster.Update() - roster := c.Roster.Get() - fmt.Printf("%d roster entries:\n", len(roster)) - for i, entry := range roster { - fmt.Printf("%d: %v\n", i, entry) - } - - go func(ch <-chan xmpp.Stanza) { - for obj := range ch { - fmt.Printf("s: %v\n", obj) - } - fmt.Println("done reading") - }(c.In) - - p := make([]byte, 1024) - for { - nr, _ := os.Stdin.Read(p) - if nr == 0 { - break - } - s := string(p) - dec := xml.NewDecoder(strings.NewReader(s)) - t, err := dec.Token() - if err != nil { - fmt.Printf("token: %s\n", err) - break - } - var se *xml.StartElement - var ok bool - if se, ok = t.(*xml.StartElement); !ok { - fmt.Println("Couldn't find start element") - break - } - var stan xmpp.Stanza - switch se.Name.Local { - case "iq": - stan = &xmpp.Iq{} - case "message": - stan = &xmpp.Message{} - case "presence": - stan = &xmpp.Presence{} - default: - fmt.Println("Can't parse non-stanza.") - continue - } - err = dec.Decode(stan) - if err == nil { - c.Out <- stan - } else { - fmt.Printf("Parse error: %v\n", err) - break - } - } - fmt.Println("done sending") -}