forked from jshiffer/go-xmpp
add urn:xmpp:time; now response jabber GetInfo
This commit is contained in:
parent
66c008d798
commit
51b558cd2c
@ -20,7 +20,7 @@ MAKEFILE=GNUmakefile
|
|||||||
all: bin/example
|
all: bin/example
|
||||||
@[ -d bin ] || exit
|
@[ -d bin ] || exit
|
||||||
|
|
||||||
bin/example: _example/example.go xmpp.go
|
bin/example: _example/example.go xmpp.go xmpp_version.go
|
||||||
@[ -d bin ] || mkdir bin
|
@[ -d bin ] || mkdir bin
|
||||||
go build -o $@ _example/example.go
|
go build -o $@ _example/example.go
|
||||||
@strip $@ || echo "example OK"
|
@strip $@ || echo "example OK"
|
||||||
|
4
xmpp.go
4
xmpp.go
@ -677,6 +677,10 @@ func (c *Client) Recv() (stanza interface{}, err error) {
|
|||||||
if err := c.SendIQLast(v.ID, v.From, v.To); err != nil {
|
if err := c.SendIQLast(v.ID, v.From, v.To); err != nil {
|
||||||
return Chat{}, err
|
return Chat{}, err
|
||||||
}
|
}
|
||||||
|
case "urn:xmpp:time":
|
||||||
|
if err := c.SendIQtime(v.ID, v.From, v.To); err != nil {
|
||||||
|
return Chat{}, err
|
||||||
|
}
|
||||||
case "jabber:iq:roster":
|
case "jabber:iq:roster":
|
||||||
var item rosterItem
|
var item rosterItem
|
||||||
var r Roster
|
var r Roster
|
||||||
|
@ -19,14 +19,23 @@ func (c *Client) SendVersion(id, toServer, fromU string) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *Client) SendIQLast(id, toServer, fromU string) error {
|
func (c *Client) SendIQLast(id, toServer, fromU string) error {
|
||||||
_, err := fmt.Fprintf(c.conn, "<iq type='result' from='%s' to='%s'"+
|
ss := fmt.Sprintf("<iq type='result' from='%s' to='%s'"+
|
||||||
"id='%s' type='result'>\n", xmlEscape(fromU),
|
" id='%s'>\n", xmlEscape(fromU), xmlEscape(toServer), xmlEscape(id))
|
||||||
xmlEscape(toServer), xmlEscape(id))
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
tt := time.Now().Sub(c.loginTime)
|
tt := time.Now().Sub(c.loginTime)
|
||||||
_, err = fmt.Fprintf(c.conn, "<query xmlns='jabber:iq:last' "+
|
ss += fmt.Sprintf("<query xmlns='jabber:iq:last' "+
|
||||||
"seconds='%d'>Working</query>\n</iq>", int(tt.Seconds()))
|
"seconds='%d'>Working</query>\n</iq>", int(tt.Seconds()))
|
||||||
|
_, err := fmt.Fprint(c.conn, ss)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client) SendIQtime(id, toServer, fromU string) error {
|
||||||
|
ss := fmt.Sprintf("<iq type='result' from='%s' to='%s'"+
|
||||||
|
" id='%s'>\n", xmlEscape(fromU), xmlEscape(toServer), xmlEscape(id))
|
||||||
|
tt := time.Now()
|
||||||
|
zoneN, _ := tt.Zone()
|
||||||
|
ss += fmt.Sprintf("<time xmlns='urn:xmpp:time'>\n<tzo>%s</tzo>"+
|
||||||
|
"<utc>%s</utc></time>\n</iq>", zoneN,
|
||||||
|
tt.UTC().Format("2006-01-02T15:03:04Z"))
|
||||||
|
_, err := fmt.Fprint(c.conn, ss)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user