xmpp: mellium.im/xmpp/xtime Index | Examples | Files

package xtime

import "mellium.im/xmpp/xtime"

Package xtime implements time related XMPP functionality.

In particular, this package implements XEP-0202: Entity Time and XEP-0082: XMPP Date and Time Profiles.



Package Files



const (
    // NS is the XML namespace used by XMPP entity time requests.
    // It is provided as a convenience.
    NS  = "urn:xmpp:time"

    // LegacyDateTime implements the legacy profile mentioned in XEP-0082.
    // Unless you are implementing an older XEP that specifically calls for this
    // format, time.RFC3339 should be used instead.
    LegacyDateTime = "20060102T15:04:05"

func Get Uses

func Get(ctx context.Context, s *xmpp.Session, to jid.JID) (time.Time, error)

Get sends a request to the provided JID asking for its time.

func Handle Uses

func Handle(h Handler) mux.Option

Handle returns an option that registers a Handler for entity time requests.

type Handler Uses

type Handler struct {
    TimeFunc func() time.Time

Handler responds to requests for our time. If timeFunc is nil, time.Now is used.

func (Handler) HandleIQ Uses

func (h Handler) HandleIQ(iq stanza.IQ, t xmlstream.TokenReadEncoder, start *xml.StartElement) error

HandleIQ responds to entity time requests.

type Time Uses

type Time time.Time

Time is like a time.Time but it can be marshaled as an XEP-0202 time payload.


t, _ := time.Parse(time.RFC3339, "2020-02-19T06:46:00-05:00")
xt := xtime.Time(t)

o, _ := xml.Marshal(xt)
fmt.Printf("%s\n", o)


<time xmlns="urn:xmpp:time"><tzo>-05:00</tzo><utc>2020-02-19T11:46:00Z</utc></time>

func (Time) MarshalXML Uses

func (t Time) MarshalXML(e *xml.Encoder, _ xml.StartElement) error

MarshalXML implements xml.Marshaler.

func (Time) TokenReader Uses

func (t Time) TokenReader() xml.TokenReader

TokenReader satisfies the xmlstream.Marshaler interface.

func (*Time) UnmarshalXML Uses

func (t *Time) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error

UnmarshalXML implements xml.Unmarshaler.

func (Time) WriteXML Uses

func (t Time) WriteXML(w xmlstream.TokenWriter) (n int, err error)

WriteXML satisfies the xmlstream.WriterTo interface. It is like MarshalXML except it writes tokens to w.

Package xtime imports 8 packages (graph). Updated 2020-03-04. Refresh now. Tools for package owners.