31 lines
638 B
Go
31 lines
638 B
Go
package main
|
|||
|
|
|
||
|
|
import (
|
||
|
|
"encoding/xml"
|
||
|
|
"gosrc.io/xmpp/stanza"
|
||
|
|
"time"
|
||
|
|
)
|
||
|
|
|
||
|
|
// Implementation of XEP-0203: Delayed Delivery
|
||
|
|
// https://xmpp.org/extensions/xep-0203.html
|
||
|
|
|
||
|
|
type Delayed_Stamp struct {
|
||
|
|
XMLName xml.Name `xml:"urn:xmpp:delay delay"`
|
||
|
|
From string `xml:"from,attr"`
|
||
|
|
Stamp string `xml:"stamp,attr"`
|
||
|
|
}
|
||
|
|
|
||
|
|
func (d *Delayed_Stamp) GetStamp() (*time.Time, error) {
|
||
|
|
stamp := d.Stamp
|
||
|
|
time, err := time.Parse(time.RFC3339, stamp)
|
||
|
|
if err != nil {
|
||
|
|
return nil, err
|
||
|
|
}
|
||
|
|
|
||
|
|
return &time, nil
|
||
|
|
}
|
||
|
|
|
||
|
|
func init() {
|
||
|
|
stanza.TypeRegistry.MapExtension(stanza.PKTMessage, xml.Name{Space: "urn:xmpp:delay", Local: "delay"}, Delayed_Stamp{})
|
||
|
|
}
|