From 1e9dc674d10e6c6bcf91f8b865c279243f71510c Mon Sep 17 00:00:00 2001 From: Flo Lauber Date: Fri, 18 Jan 2013 19:48:50 -0500 Subject: [PATCH] return Presence messages in Recv --- xmpp.go | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/xmpp.go b/xmpp.go index a8469f7..ef2107b 100644 --- a/xmpp.go +++ b/xmpp.go @@ -222,15 +222,25 @@ type Chat struct { Text string } +type Presence struct { + From string + To string + Type string + Show string +} + // Recv wait next token of chat. -func (c *Client) Recv() (chat Chat, err error) { +func (c *Client) Recv() (event interface{}, err error) { for { _, val, err := next(c.p) if err != nil { return Chat{}, err } - if v, ok := val.(*clientMessage); ok { + switch v := val.(type) { + case *clientMessage: return Chat{v.From, v.Type, v.Body}, nil + case *clientPresence: + return Presence{v.From, v.To, v.Type, v.Show}, nil } } panic("unreachable") @@ -340,9 +350,9 @@ type clientPresence struct { Type string `xml:"type,attr"` // error, probe, subscribe, subscribed, unavailable, unsubscribe, unsubscribed Lang string `xml:"lang,attr"` - Show string `xml:"show,attr"`// away, chat, dnd, xa - Status string `xml:"status,attr"`// sb []clientText - Priority string `xml:"priority,attr"` + Show string `xml:"show"` // away, chat, dnd, xa + Status string `xml:"status,attr"` // sb []clientText + Priority string `xml:"priority,attr"` Error *clientError }